错误:Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: Fatal error occurred when node tried to create too many dynamic partitions. The maximum number of dynamic partitions is controlled by hive.exec.max.dynamic.partitions and hive.exec.max.dynamic.partitions.pernode. Maximum was set to 100 partitions per node, number of dynamic partitions on this node: 101
问题排查步骤:
发生错误:
查看错误任务:
定位到错误的ID,错误的位置:作业已经提交到mapr任务里面:
查询hadoop原生界面,根据错误时间及id查询:
确定问题是动态分区导致的问题:
查看动态分区设置:
// 动态分区
set hive.exec.dynamic.partition=true;
// 非严格模式。可以不指定特定的分区。如果是严格模式,那么至少要指定一个分区
set hive.exec.dynamic.partition.mode=nonstrict;
// 最大分区数量
set hive.exec.max.dynamic.partitions.pernode=1000;
解决办法有两种:
1.扩大动态分区数量,这样会导致有很多小文件,不利于系统维护
2.修改脚本,尽量不要使用动态分区。