我能够从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"));
}
答案 0 :(得分:2)
我认为很难与MapReduce代码一起执行此操作。原因是
您可以做的最好是,在第一次遇到列限定符时,在地图代码中创建一个单独的HDFS /本地文件。您需要使用适当的文件操作API来创建此文件。稍后当作业完成时,您可以在其他程序中使用这些标头,或将它们合并为一个文件。