2011-12-06 52 views
4

我正在試驗Hadoop Map-Reduce,在我的測試中,我能夠將reducer的輸出存儲到HBase。但是,我想寫一個MySQL數據庫而不是HBase數據。 Mappers仍然會從HBase讀取他們的輸入數據。我已經發現了這一點,但它需要在輸入和輸出端都使用MySQL,而我只需要在輸出端使用它。另外,上面的link使用了一些來自org.apache.hadoop.mapred軟件包的不贊成使用的類,現在有一個新的軟件包org.apache.hadoop.mapreduce可用,但是到目前爲止,我無法找到任何使用這個新軟件包的教程。從Hadoop Reducer向MySQL寫入數據

回答

1

我發現這個,但它需要在輸入和輸出都使用MySQL,而我只需要輸出。

InputFormat(DBInputFormat)獨立於OutputFormat(DBOutputFormat)。應該可以在映射器中從HBase讀取數據並寫入Reducer中的數據庫。

使用新的MR API將Job#setInputFormat和Job#setOutputFormat設置爲舊MR API,將JobConf#setInputFormat和JobConf#setOutputFormat恰當地設置爲需要的輸入/輸出格式。這兩種格式不需要相同。如果需要,應該可以從映射器中的XML中讀取數據並寫入Reducer中的Queue。

此外,上述鏈路使用與org.apache.hadoop.mapred包中的一些已過時的類現在一個新的包org.apache.hadoop.mapreduce是可用的,但是我無法找到使用此教程的任何到目前爲止新的包裝。

如果您對舊API感到滿意,那就繼續使用它。在新舊API之間的功能中有not much difference。有兩個舊的和新的API的DBInputFormat。確保您不要將舊的/新的InputFormat與舊的/新的MR API混合使用。

這是關於新API的tutorial

+0

我也想到了這一點,並使用新的API。但是,我在DBConfiguration類的某個點上獲得了NPE。所以,我正在尋求DBInputFormat,DBConfiguration和DBOutputFormat的適當使用。 – vikas

+1

感謝您的最後一個鏈接。我通過對[教程](http://sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html)的評論發現了我的問題。回覆本教程中作者的第一評論後,我的問題得到解決。 – vikas