0
我有一份工作可以创建一个Avro文件到HDFS中,并在文件中添加数据。然而,偶尔不会有任何数据需要追加,在这种情况下,我不希望应用程序刷新和关闭文件,而是应该检查文件是否为空(但我假设Avro模式将被写入头部在技术上不是空文件),如果文件为空,则删除该文件。如何防止将空的Avro文件提交到HDFS?
Avro + HDFS lib可行吗?
我有一份工作可以创建一个Avro文件到HDFS中,并在文件中添加数据。然而,偶尔不会有任何数据需要追加,在这种情况下,我不希望应用程序刷新和关闭文件,而是应该检查文件是否为空(但我假设Avro模式将被写入头部在技术上不是空文件),如果文件为空,则删除该文件。如何防止将空的Avro文件提交到HDFS?
Avro + HDFS lib可行吗?
指定作业的输出格式时,请尝试使用LazyOutputFormat。它会懒散地创建输出,这意味着只有输出存在时才会创建输出文件。
因此,不要写这样的东西: job.setOutputFormatClass(TextOutputFormat.class);您可以像这样使用LazyOutputFormat来代替: LazyOutputFormat.setOutputFormatClass(job,TextOutputFormat.class);
这是否正确使用avro或应该TextOutputFormat.class是AvroOutputFormat.class – Rig 2015-04-04 14:52:25
这是一个非常详细和深思熟虑的答案,但你不觉得有点懒惰lazyoutput格式,当你可以建立一些东西你自己。 – aaronman 2015-09-21 21:22:37