我們試圖獲取MapReduce程序在映射器中迭代的輸入路徑總數。我們將使用這個以及一個計數器來根據索引格式化我們的值。是否有一種簡單的方法可以從繪圖器中提取總輸入路徑數?提前致謝。在Hadoop Mapper中獲取總輸入路徑數
0
A
回答
0
您可以通過源代碼查看FileInputFormat.getSplits()
- 這將拉回mapred.input.dir
的配置屬性,然後將此CSV解析爲一組路徑。
這些路徑仍然可以代表文件夾和正則表達式,因此getSplits()所做的下一件事是將數組傳遞給受保護的方法org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(JobContext)
。這實際上是通過dirs/regex列出的,並列出目錄/正則表達式匹配文件(如果已配置,也會調用PathFilter
)。
因此,通過保護此方法,您可以創建一個FileInputFormat的簡單「虛擬」擴展,該擴展具有listStatus方法,接受Mapper.Context作爲參數,然後將調用包裝爲FileInputFormat.listStatus方法:
public class DummyFileInputFormat extends FileInputFormat {
public List<FileStatus> listStatus(Context mapContext) throws IOException {
return super.listStatus(mapContext);
}
@Override
public RecordReader createRecordReader(InputSplit split,
TaskAttemptContext context) throws IOException,
InterruptedException {
// dummy input format, so this will never be called
return null;
}
}
編輯:事實上,它看起來像FileInputFormat
已經這樣做對你來說,在getSplits()方法(至少在1.0.2,大概在0.20推出的最後配置作業屬性mapreduce.input.num.files
。 203)
0
您可以使用輸入路徑的數量在您的作業中設置配置。就像
jobConf.setInt("numberOfPaths",paths.length);
只是把代碼放在你配置你的工作的地方。之後,通過從上下文中獲取它,將其從Mapper.setup(Mapper.Context context)
中的配置中讀出。
相關問題
- 1. 獲取輸入路徑在Hadoop中
- 2. 獲取hadoop減速器中的總輸入路徑
- 3. hadoop - Hadoop jar輸入路徑問題
- 4. 豬輸入路徑HDFS Hadoop中
- 5. Hadoop的 - 輸入路徑不存在
- 6. nutch2.0 Hadoop的輸入路徑不存在
- 7. hadoop輸入路徑不存在
- 8. Hadoop,MapReduce - 多輸入/輸出路徑
- 9. Hadoop-> Mapper->如何從給定的輸入路徑中只讀取每個文件中的前N行?
- 10. Hadoop無法識別輸入路徑
- 11. Hadoop - MapReduce - Mapper輸出類型
- 12. Hadoop Mapper類中的參數
- 13. Hadoop從絕對路徑和基本路徑獲取相對路徑
- 14. Hadoop Mapper中的依賴注入
- 15. 如何在Xorg中使用Xlib獲取輸入設備路徑?
- 16. Mapper類如何將SequenceFile標識爲hadoop中的輸入文件?
- 17. hadoop類路徑
- 18. 如何在hadoop map reduce程序中的mapper代碼中獲取輸入文件名
- 19. 在Postharp編譯期間獲取項目路徑/輸出路徑
- 20. Hadoop MapReduce wordcount教程錯誤:輸入路徑不存在
- 21. Spark-Hadoop-> org.apache.hadoop.mapred.InvalidInputException:輸入路徑不存在
- 22. Hadoop -pseudo分佈式模式:輸入路徑不存在
- 23. Hadoop是要求輸入路徑是在localhost 9000
- 24. 首先Hadoop項目的錯誤:「輸入路徑不存在」
- 25. 從jQuery中的表總輸入中獲取總數?
- 26. Hadoop中的Mapper和Reducer
- 27. 在流式傳輸hadoop程序中獲取輸入文件名
- 28. 在AppServiceProvider中獲取路徑參數
- 29. 獲取模塊路由引入路徑
- 30. 如何獲取R中輸入文件的絕對路徑
基督我得到了一個輸入路徑沒有發現異常,當我嘗試這一點。輸入路徑肯定存在。 –
你可以發佈整個堆棧跟蹤(pastebin或soem這樣的地方,使格式更容易) –
克里斯,我很抱歉,我們實現了一個自定義FileInputFormat,執行遞歸跟蹤。您的解決方案奏效再次感謝! –