--將這些小文件進行合并,這里使用distribute by floor(rand()*5)將所有的小文件數據歸并到4個文件中insert overwrite table table_name
select col1,col2,col3,col4,col5 from table_name
distribute by floor(rand()*5);
針對HDFS上的小文件
Hadoop Archive簡稱HAR,是一個高效地將小文件放入HDFS塊中的文件存檔工具,
它能夠將多個小文件打包成一個HAR文件,這樣在減少namenode內存使用的同時,仍然允許對文件進行透明的訪問。使用歸檔之前,先設置如下3個參數:#用來控制歸檔是否可用sethive.archive.enabled=true;#通知Hive在創建歸檔時是否可以設置父目錄sethive.archive.har.parentdir.settable=true;#控制需要歸檔文件的大小sethar.partfile.size=1099511627776;# 使用以下命令進行歸檔
ALTER TABLE A ARCHIVE PARTITION(dt='2020-12-24', hr='12');# 對已歸檔的分區恢復為原文件
ALTER TABLE A UNARCHIVE PARTITION(dt='2020-12-24', hr='12');# 歸檔的分區可以查看不能 insert overwrite,必須先 unarchive