2012-04-17 14 views
1

全部,有沒有辦法確定在Hadoop/Dumbo/Mrjob中傳遞給地圖作業的文件名?

我正在創建一個接口,用於處理一些海量數據並生成用於執行一些機器學習內容的arff文件。我目前可以收集這些功能,但我無法將它們與它們來源的文件關聯起來。我目前使用的小飛

def mapper(key, value): 
    #do stuff to generate features 

是否有確定被打開,並傳遞給映射函數對其內容的文件名的任何方便的方法?

再次感謝。 -Sam

回答

1

如果您能夠訪問作業配置屬性,那麼mapreduce.job.input.file屬性應該包含當前文件的文件名。

雖然我不確定如何獲得Dumbo/Mrjob中的這些屬性 - 文檔指定句點(在conf名稱中)替換爲下劃線,然後查看PipeMapRed.java的源代碼,看起來像一切單個作業的conf屬性設置爲一個環境變量 - 所以嘗試訪問名爲mapreduce_job_input_file

http://hadoop.apache.org/mapreduce/docs/r0.21.0/mapred_tutorial.html#Configured+Parameters

1

的環境變量如上所述here,您可以使用-addpath yes選項。

-addpath是(取代通過由相應的輸入文件的路徑和所述原始密鑰的元組的每個輸入鍵)

相關問題