今天,用Flink寫入hive的時候,突然想到一個問題,就是如果隔一個小時生成一個文件,那麼kafka的並行度爲12,也就是說,一個小時會產生12個文件。一天就是12*24個文件,10天,就有2000多個文件。這個肯定是不可取的。
於是研究一下,如何合併hive小文件,大家可以參考https://cloud.tencent.com/developer/article/1514064 這篇文章。於是基於CDH中,進行了修改
這修改後,保存參數重啓即可。這裏,小文件平均大小合併閾值 16M比較小 ,生產中,可以設置爲128M。
之後 insert overwrite table xxx select * from xxx; 就會將文件合併重新覆蓋回去。
值得一提的是,對於沒有涉及到的文件(就是hive查詢中,沒有查到的文件,譬如flink寫入時:_part...pending 這種中間文件),
hive並不會覆蓋,這就比較好了