我正在将数据从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
谢谢你的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!