hive中的小文件問題


小文件問題
原因:

① 眾所周知,小文件在HDFS中存儲本身就會占用過多的內存空間,那么對於MR查詢過程中過多的小文件又會造成啟動過多的Mapper Task, 每個Mapper都是一個后台線程,會占用JVM的空間。
② 在Hive中,動態分區會造成在插入數據過程中,生成過多零碎的小文件。
③ 不合理的Reducer Task數量的設置也會造成小文件的生成,因為最終。Reducer是將數據落地到HDFS中的。
④ Hive中分桶表的設置。

解決方案:
① 在數據源頭HDFS中控制小文件產生的個數,比如采用Sequencefile作為表存儲格式,不要用textfile,在一定程度上可以減少小文件(常見於在流計算的時候采用Sequencefile格式進行存儲)。
② 減少reduce的數量(可以使用參數進行控制)。
③ 慎重使用動態分區,最好在分區中指定分區字段的val值。
④ 做好數據的校驗工作,比如通過腳本方式檢測hive表的文件數量,並進行文件合並。
⑤ 合並多個文件數據到一個文件中,重新構建表。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM