2014-10-16 48 views
0

我有一份工作可以创建一个Avro文件到HDFS中,并在文件中添加数据。然而,偶尔不会有任何数据需要追加,在这种情况下,我不希望应用程序刷新和关闭文件,而是应该检查文件是否为空(但我假设Avro模式将被写入头部在技术上不是空文件),如果文件为空,则删除该文件。如何防止将空的Avro文件提交到HDFS?

Avro + HDFS lib可行吗?

回答

3

指定作业的输出格式时,请尝试使用LazyOutputFormat。它会懒散地创建输出,这意味着只有输出存在时才会创建输出文件。

因此,不要写这样的东西: job.setOutputFormatClass(TextOutputFormat.class);您可以像这样使用LazyOutputFormat来代替: LazyOutputFormat.setOutputFormatClass(job,TextOutputFormat.class);

+1

这是否正确使用avro或应该TextOutputFormat.class是AvroOutputFormat.class – Rig 2015-04-04 14:52:25

+0

这是一个非常详细和深思熟虑的答案,但你不觉得有点懒惰lazyoutput格式,当你可以建立一些东西你自己。 – aaronman 2015-09-21 21:22:37