hive插入数据时 报错:return code 2_execution error, return code 2 from org.apache.had
Hive在执行插入数据操作时出现“Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask”错误,是一个比较常见的问题。这个错误通常是由于数据类型不匹配、内存不足或者查询优化不当等原因引起的。下面我们将从几个方面来介绍解决此问题的方法。
方法1:可以设置动态分区的相关参数。
-- 开启非严格模式
set hive.exec.dynamic.partition.mode=nonstrict;
-- 设置各个节点生成动态分区的最大数量: 默认为100个 (一般在生产环境中, 都需要调整更大)
set hive.exec.max.dynamic.partitions.pernode=10000;
-- 设置最大生成动态分区的数量: 默认为1000 (一般在生产环境中, 都需要调整更大)
set hive.exec.max.dynamic.partitions=100000;
-- hive一次性最大能够创建多少个文件: 默认为10w
set hive.exec.max.created.files=150000;
方法2:设置spark引擎
插入前在hive命令行输入:
set hive.execution.engine=spark;
方法3:利用where进行数据分批导入
比如:
insert overwrite table ods.ods_mem_member_union_i partition(dt)
select *,if(reg_time 100000 and zt_id<=200000
之后再导入>200000 的