91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Hive合并小文件

發布時間:2021-07-30 16:26:02 來源:億速云 閱讀:416 作者:Leah 欄目:大數據

如何使用Hive合并小文件,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

問題背景    

目前集群存于一個非常不健康的狀態,主要問題是小文件太多,單個DataNode的block數量閾值是500,000,而現在單個DataNode的block為2,631,218,約為閾值的5倍,現在所有DataNode都處于黃色不健康狀態。

小文件問題會直接帶來NameNode的壓力巨大,從而導致HDFS的穩定性,同時對HDFS日常的數據讀寫帶來性能下降。目前已可以看到集群的NameNode頻繁出現檢查點告警問題。

通過對集群中目前目錄個數,文件大小,文件數量,Hive表數量,Hive數據庫數量,Hive分區數量進行了詳細的數據采集。發現主要是HDFS目錄中的小文件太多,大量1KB的文件,甚至是小于1KB的文件;具體表現為:不論表與分區的數據量大小,當有分區時每個分區具有200個文件,當沒有分區時每個表有200個文件,而許多表是小表,所以造成嚴重的小文件問題。

解決此問題的方法主要為兩個方面;一是從源頭解決小文件問題,在導數的過程中對作業進行優化,以減少小文件的輸出,此方法需要業務方解決;二是合并平臺上已有的小文件;本問描寫合并平臺小文件的方案。

原表情況    

通過對集群內的文件數量以及文件大小進行分析,小文件問題基本出現在hive表中;經過近一步分析,發現每個分區存在著200個小文件,可以將這些文件合并減少小文件數量從而緩解小文件問題。

示例表test_part一共20行數據,以字段date_str為分區

如何使用Hive合并小文件

如何使用Hive合并小文件

如何使用Hive合并小文件

共有五個分區

如何使用Hive合并小文件

每個分區分別四個文件

如何使用Hive合并小文件

執行流程    

執行流程總體如下:

1、使用create table name like tb_name創建備用表,使得表結構保持一致;

如何使用Hive合并小文件

2、配置支持merge等參數,并使用insert overwrite語句讀取原表數據插入到備用表。

如何使用Hive合并小文件

3、確認表數據一致后,刪除原表,使用alter語句將備用表的表名修改為原表的表名。

如何使用Hive合并小文件

方案描述    

新建備表,表結構與原表保持一致

create table test_part_bak like test_part; 

如何使用Hive合并小文件

如何使用Hive合并小文件

設置如下參數,使支持合并

SET hive.merge.mapfiles = true;
SET hive.merge.mapredfiles = true;
SET hive.merge.size.per.task = 256000000;
SET hive.merge.smallfiles.avgsize = 134217728;
SET hive.exec.compress.output = true;
SET parquet.compression = snappy;
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.exec.dynamic.partition = true;

如何使用Hive合并小文件

使用insert overwrite語句查詢原表數據覆蓋備表

insert overwrite table test_part_bak partition(date_str) select * from test_part;

如何使用Hive合并小文件

備用表數據和原表一致

如何使用Hive合并小文件

刪除原表,將備用表表名修改為原表名

alter table test_part_bak rename to test_part;

如何使用Hive合并小文件

合并后表數據沒有變化

如何使用Hive合并小文件

表結構一致

如何使用Hive合并小文件

從HDFS文件系統可以看出,分區數量沒有改變,每個分區的幾個小文件已經合并為一個文件。

如何使用Hive合并小文件

關于如何使用Hive合并小文件問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽阳县| 黑山县| 平罗县| 汉川市| 镇原县| 关岭| 红原县| 长岛县| 郴州市| 墨竹工卡县| 镇远县| 德江县| 荆门市| 密山市| 通渭县| 合川市| 新巴尔虎左旗| 沽源县| 泸定县| 博野县| 阳山县| 平泉县| 莲花县| 慈利县| 黔西| 阳泉市| 铜鼓县| 改则县| 保德县| 浮梁县| 城步| 海兴县| 大宁县| 沈阳市| 壶关县| 宁晋县| 丰宁| 名山县| 佛坪县| 黄梅县| 河北区|