2013-05-02 27 views
0

我能夠從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"));    
    } 

回答

2

我覺得這是很難與你的MapReduce代碼一起做到這一點。其原因是

  1. 的標題可能不相同的數據類型的
  2. 如果類型是一樣的,你可以從減速代碼設置()方法寫頭,但不保證該標題將顯示爲輸出中的第一行。

最好你可以做的是,在第一次遇到列限定符時,在你的地圖代碼中創建一個單獨的HDFS /本地文件。您需要使用適當的文件操作API來創建此文件。稍後當作業完成後,您可以在其他程序中使用這些標題或將它們合併爲一個文件。

+0

k fine.Thanks for your reply。我用setup()方法 – 2013-05-02 07:31:40

+0

好。我可以看看你的代碼嗎? – Rags 2013-05-02 07:34:19

+0

ys.pasted abv(SOLUTION) – 2013-05-02 07:37:16

相關問題