2012-06-19 74 views
0

我想用Hadoop的StreamInputFormat來處理xml文件。我使用的是較新的API(Hadoop-0.20.205.0)。但是,似乎Job不支持StreamInputFormat,因爲當我嘗試通過「job.setInputFormatClass(StreamInputFormat.class)」設置屬性時,它正顯示出 -Hadoop Job API支持StreamInputFormat嗎?

"The method setInputFormatClass(Class<? extends InputFormat>) in the type Job is not pplicable for the arguments (Class<StreamInputFormat>)" 

我甚至已下載「Hadoop的流-0.20.205.0.jar」明確,進口的「org.apache.hadoop.streaming」包,仍然沒有luck.Any建議?

+2

塔裏克,你有一個具體問題?這種問題(在它的當前狀態)並不是堆棧溢出所鼓勵的東西 - http://stackoverflow.com/faq#dontask –

+0

Chris..is現在可以嗎?..或者我需要更改? – Tariq

+0

好得多,謝謝 –

回答

1

您正嘗試在新API客戶端作業(mapreduce)中使用old-api InputFormat(mapred)。

Job.setInputFormat()期待延伸o.a.h.mapreduce.InputFormat(新的「映射縮減」 API)的一類,其中作爲流API的所有寫在舊的API(「mapred」包),和StreamInputFormat延伸o.a.h.mapred.KeyValueTextInputFormat,這反過來又延伸o.a.h.mapred.FileInputFormat(這兩者都是舊的API):

+0

感謝你的迴應Chris..is有一些方法來使用它與新的API(即作業)??我試圖將作業轉換到JobConf,但它沒有工作..其實我想避免使用舊的API ..或者我應該只和JobConf一起去嗎?如果我問的是基礎知識,我會道歉。我仍然處於學習階段。 – Tariq

+0

如果尚未完成(應該足夠簡單),則需要將輸入格式移植到新的API中。你想用python/ruby​​/c編寫MR代碼嗎?如果您正在編寫Java代碼來調用作業,您爲什麼對流媒體API感興趣? –

+0

我正在使用Java並選擇流式傳輸,因爲我找不到任何適用於其他地方的XML處理的任何東西。我也不想使用Mahout的XMLInputFormat – Tariq