异常信息
1 | Error: java.lang.RuntimeException: |
原因
Hive对其创建的动态分区数量实施限制。默认值为每个节点100个动态分区,所有节点的总(默认)限制为1000个动态分区。但是,这可以调整。
解决办法
1 | set hive.exec.dynamic.partition=true; |
用以上设置后不能保证正常,有时候还需要设置reduce数来配合动态分区使用
1 | set mapred.reduce.tasks=10; |
这几个参数需要满足一下条件:
1 | dynamic.partitions / dynamic.partitions.pernode <=mapred.reduce.tasks |
比如上面的例子:2048 / 256 = 8,如果mapred.reduce.tasks小于8就会报错,而hive默认reduce数是跟具数据量来动态调整的,所以有时候需要手动调整