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