2014-02-12 42 views
0

我在尋找一個簡單的方法來鏈後處理代碼的地圖後減少工作如何將MapReduce工作

具體安排後,後處理任務,在涉及重命名\移動了文件創建由org.apache.hadoop.mapred.lib.MultipleOutputs(中類對輸出文件名的限制,所以我ca't直接在MapReduce工作產生的文件)

我知道的選項(或認爲的)是:

  • 在創造就業機會將其添加代碼 - 這就是我現在所做的,但我更喜歡這個任務將是計劃由JobTracker的LED(減少過程被中止的機會)使用工作流引擎(路易吉,Oozie的)
  • - 但這似乎是使用工作鏈這個問題
  • 矯枉過正 - 這使得鏈接MapReduce作業 - 它可以鏈接一個「簡單」的任務?

回答

1

您的「簡單」任務應該是一個僅適用於Mapper的工作。你的Map()接收文件名作爲關鍵字並重命名文件。對於這一點,你必須寫自己的InputFormat和RecordReader,像中的鏈接,但你的RecordReader不應實際讀取的文件,只需在getCurrentKey()返回文件名:

https://code.google.com/p/hadoop-course/source/browse/HadoopSamples/src/main/java/mr/wholeFile/WholeFileInputFormat.java?r=3

https://code.google.com/p/hadoop-course/source/browse/HadoopSamples/src/main/java/mr/wholeFile/WholeFileRecordReader.java?r=3