2014-10-16 45 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