2013-08-02 49 views
0

我正在使用安裝在Windows Server上的Hadoop平臺(由HortonWorks)並在C#中編碼Map/Reduce文件。XML文件輸入映射/減少Hadoop Windows服務器

我有一個100k xml文件的輸入文件夾。我想讀取每個XML文件並將每個標籤寫入一行。請按照下面的例子。

輸入:

<Person> 
    <a>1</a> 
    <b>2</b> 
    <c>3</c> 
</Person> 

輸出 1,2,3 .... ....

能否請您給我,我應該如何讀取數據的輸入,截至目前。 Mapper提供了每個文件的單個文件,這些文件很難解析單個標籤。

回答

0

您的第一個任務是找到一種方法來讀取xml文件並將它們提供給您的MR作業,因爲沒有可用於xml文件的內置InputFormat。如果您需要一些幫助,請參閱thisthis(沒有親自測試過,但他們對我來說看起來不錯)。您將在作業配置期間將您提供的開始和結束標記中的內容作爲映射器中的值。提取您需要的值並生成輸出。 HTH

0

我認爲你應該看看XMLInputFormat來處理mapreduce中的xml文件。你可以分別指定你的情況下的開始和結束標記。請查看XMLInputFormat Link。現在在每個地圖功能中,您將獲得該值(即您在問題中提到的那個)作爲單個記錄。現在,您可以使用XML DOM解析器(檢查此鏈接XML DOM parser example)或XML SAX解析器XML SAX parser example來檢索所需的子值,並可以將它們發送爲最終輸出。