如何输出第一行作为列限定符名称

时间:2013-05-02 04:37:43

标签: hadoop mapreduce

我能够从xml处理两个节点。我得到以下输出:

bin/hadoop fs -text /user/root/t-output1/part-r-00000
    name:ST17925 currentgrade 1.02
    name:ST17926 currentgrade 3.0
    name:ST17927 currentgrade 3.0

但我需要输出如下:

studentid curentgrade
ST17925 1.02
ST17926 3.00
ST17927 3.00

我怎样才能做到这一点?

我的完整源代码:https://github.com/studhadoop/xml/blob/master/XmlParser11.java

编辑:解决方案

protected void setup(Context context) throws IOException, InterruptedException {
    context.write(new Text("studentid"), new Text("currentgrade"));            
  }

1 个答案:

答案 0 :(得分:2)

我认为很难与MapReduce代码一起执行此操作。原因是

  1. 标题可能不是相同的数据类型
  2. 如果类型相同,您可以从Reducer代码的setup()方法中编写标题,但不能保证标题将显示为输出中的第一行。
  3. 您可以做的最好是,在第一次遇到列限定符时,在地图代码中创建一个单独的HDFS /本地文件。您需要使用适当的文件操作API来创建此文件。稍后当作业完成时,您可以在其他程序中使用这些标头,或将它们合并为一个文件。