我正在运行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. 保持输出为零
我不这么认为。 –