> 技术文档 > hive插入数据时 报错:return code 2_execution error, return code 2 from org.apache.had

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 的