问题描述
今天使用hive动态分区向表插入数据时,数据量不大几百万,2015年至今的数据,ods至dw层时按天分区。(华为云服务器 1T内存)
1.表使用的是parquet存储格式。
2.虽然数据量很小,但是分区比较多。
解决过程
1.直接执行hiveSQL 动态分区,调整参数都不行。
2.尝试插入不分区的临时表时,执行很快。(发现原因是分区的原因)
3.调整按月分区,很快完成。
4.再按天分区插入到dw表中,不报错,8分钟完成
5.第四步按天分区时,增加set hive.optimize.sort.dynamic.partition =true;该参数–启用自动排序参数,强制产生reduce任务。–数据量很小,但是分区比较多的情况适用
6.直接适用第五步的参数,ods至dwd动态分区,执行通过,8min完成
总结
–数据量很小,但是分区比较多的情况可以适用下面参数
set hive.optimize.sort.dynamic.partition =true;
–启用自动排序参数,强制产生reduce任务。