hive-insert-overwrite动态分区reducer-skew性能优化

i5desfxk  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(392)

我正在将数据从spark写入一个临时的非分区表-8000个文件,每个文件大约100 mb。我的目标是将数据从这个暂存表移动到一个目标分区表(日期、类型、类)

Target Table (partitioned on date,type,class)
Values in partitioned columns - 
date - 20200101 to 20200331 (31 days YYYYMMDD)
type - A/B 
class - 1/2/3

样本日期20200101的近似数据分布

20200101/A/1 - 35 GB
20200101/A/2 - 200MB
20200101/A/3 - 150MB
20200101/B/1 - 2 GB
20200101/B/2 - 100 MB
20200101/B/3 - 100MB

我运行下面的查询来动态地将数据加载到目标表中-

insert overwrite table Target partition(date,type,class) select * from staging distribute by date,type,class;

查询正常运行,但最后挂起了几个reducer。在分配中试过以下条款,但至今没有收获
按日期、类型、类别、rand()分发;
按日期、类型、类、uuid()分发;
按日期、类型、类别分发,<表中的另一列>;
我的目标是在分区目录中创建128MB或大约这个大小的文件,以避免创建小文件,因此使用这种方法通过配置单元将数据从暂存加载到目标。例如-

20200101/A/1 - 35 GB    =~ 280 Files
20200101/A/2 - 200MB    =~ 2 files
20200101/A/3 - 150MB    =~ 2 files
20200101/B/1 - 2 GB     =~ 16 files
20200101/B/2 - 100 MB   =~ 1 files
20200101/B/3 - 100MB    =~ 1 files

谢谢你的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题