2010-12-08 55 views
3

我需要爲Hadoop MapReduce應用程序實現自定義(服務)輸入源。我google'd和SO'd,發現一種方式繼續是實現一個自定義InputFormat。那是對的嗎?Hadoop MapReduce InputFormat已棄用?

顯然根據http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/mapred/InputFormat.html已棄用InputFormat的方法getRecordReader()和getSplits()。什麼是替代品?

Hadoop的字計數例如仍然使用相同的...

+0

你的問題實際上是在不同版本之間。 `0.20.2`(最新的穩定版本)的大部分問題是它明確棄用功能而沒有版本內替換。 `MultipleOutputs`和`org.apache.hadoop.mapred`幾乎全部都是這種情況。這似乎表明了我一直在關注的API的重大重組。 (回答即將出現,一旦我編譯了足夠的源代碼信息。) – MrGomez 2010-12-08 05:01:07

回答

2

the documentation:

已過時接口

...

org.apache.hadoop.mapred.InputFormat

使用InputFormat inste廣告。

...

由於與0.20.2怪異的行爲貶低,甚至離奇的建議自嘲的接口後,用一個實現,我挖得更深一些。此界面仍存在於0.21.0中,並且已移除了棄用標記。在撰寫本文時,我無法在主幹中找到類似的界面。

+0

謝謝,我實現了一個自定義的InputFormat,很高興知道0.21.0「undeprecates」它。 :D – Sri 2010-12-08 05:38:58

+0

@Srirangan很高興幫助! – MrGomez 2010-12-08 05:41:13

5

儘管Hadoop仍然在內部使用來自mapred軟件包的東西,但從用戶的角度來看,它們幾乎都應該被視爲棄用。 Hadoop在文檔方面極其缺乏,它們的例子都傾向於過時。幸運的是,當你真的陷入困境時,總會有一些堆棧溢出

4

發生了什麼事情,在0.20他們棄用mapred類並引入了一個新的API。然而,新的API缺少核心功能,因此舊版API在最新版本中「不贊成」。建議使用舊的API,因爲它最有可能是在這裏停留的。