我正在運行Hadoop mapreduce流式作業(僅適用於mappers工作)。在某些情況下,我的作業寫入標準輸出,從而創建一個非零大小的輸出文件。在某些情況下,我的作業不會向stdout寫入任何內容,但仍會創建大小爲零的輸出文件。有沒有辦法避免在沒有任何內容寫入標準輸出時創建這個大小爲零的文件。輸出文件大小爲零
Q
輸出文件大小爲零
0
A
回答
0
如果您不介意擴展您當前的輸出格式,則只需要覆蓋OutputCommitter以在沒有數據寫入時「中止」commitTask階段。
請注意,並非所有輸出格式都顯示空文件的零文件字節(例如,序列文件具有標題),因此您不能只檢查輸出文件大小。
看看源下列文件:
- OutputCommitter - 基抽象類
- FileOutputCommitter - 大多數FileOutputFormats使用的提交者所以這是一個良好的開端。看看私有方法
moveTaskOutputs
,這是你的邏輯將最有可能去(不要複製的文件,如果沒有寫入)
0
是否使用MultipleOutputs? 如果是,則即使Reducer沒有任何內容寫入輸出,MultipleOutputs也會創建默認文件。 爲了避免這種默認零大小的輸出,你可以使用LazyOutputFormat.setOutputFormatClass()
從我的經驗,即使您正在使用LazyOutputFormat,創建零大小的文件時:減速機有一定的數據寫入(因此創建輸出文件)但在編寫輸出之前還原器會死亡。我相信這是一個計時問題,所以你可能會發現HDFS中只存在部分縮減器輸出文件,或者你可能根本沒有注意到這一點。
例如。如果您有10個reducer,則可能只有'n'(n < = 10)個文件,其中一些文件大小等於0個字節。
相關問題
- 1. FPDI輸出文件大小
- 2. writeRaster輸出文件大小
- 3. Umbraco輸出文件大小
- 4. fstat獲取文件大小爲零
- 5. Perl FTP零大小文件
- 6. 文件大小是零
- 7. UIImagePNGRepresentation增加輸出文件大小而不是減小大小
- 8. SQOOP不均勻輸出文件大小
- 9. 限制Python輸出文件大小
- 10. 輸出文件大小批量
- 11. Perl HTML文件上傳問題。文件大小爲零
- 12. QVector大小()返回大小爲零
- 13. RMagick文件大小爲不同大小的圖像提供奇怪的輸出
- 14. NFS創建文件(覆蓋)=零大小?
- 15. C++矢量大小爲零
- 16. NSURLCache內存大小爲零
- 17. 輸出大小mcrypt_encrypt
- 18. Mapreduce爲大輸入文件拋出OutOfMemoryError
- 19. PHP文件名和文件大小輸出
- 20. 對於小文件大小的libav/ffmpeg輸出優化
- 21. 來自spplot的PDF輸出的大文件大小
- 22. Java:在輸出文件中得到零
- 23. 輸出文件包含額外的零
- 24. Log4j設置爲不創建零大小的日誌文件?
- 25. 從主包複製創建文件大小爲零kb
- 26. Azure存儲:上傳的文件大小爲零字節
- 27. 如何將文件大小更改爲零?
- 28. ffmpeg給出0大小的輸出文件
- 29. 輸出顯示不爲零
- 30. 保持輸出爲零
我不這麼認爲。 –