hive任务报错SELECT DISTINCT ‘org.apache.hadoop.hive.metastore.model.MPartition‘

问题描述:

hive执行INSERT OVERWRITE TABLE操作时在最后阶段任务出现报错:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. MetaException(message:Exception thrown when executing query : SELECT DISTINCT 'org.apache.hadoop.hive.metastore.model.MPartition' AS `NUCLEUS_TYPE`,`A0`.`CREATE_TIME`,`A0`.`LAST_ACCESS_TIME`,`A0`.`PART_NAME`,`A0`.`PART_ID` FROM `PARTITIONS` `A0` LEFT OUTER JOIN `TBLS` `B0` ON `A0`.`TBL_ID` = `B0`.`TBL_ID` LEFT OUTER JOIN `DBS` `C0` ON `B0`.`DB_ID` = `C0`.`DB_ID` WHERE `B0`.`TBL_NAME` = ? AND `C0`.`NAME` = ? AND `A0`.`PART_NAME` = ?)

日志查看:

查看对应的yarn上面的日志出现的报错提示为:

Can not initialize counter due to context is not a instance of TaskInputOutputContext, but is org.apache.hadoop.mapreduce.task.TaskAttemptContextImpl

问题分析:

##查看到出现prov_id=0登录失败(0)的信息。怀疑最后阶段插入数据时来源表异常。

问题解决:

##通过分组统计来源表各prov_id字段的数值,确实发现来源表出现两条异常记录;即来源表出现问题,需要重入来源表数据

问题总结:

原因:

partition字段出现异常字符导致的报错,即分区不支持中文;(hive分区支持中文设置可参考先前博客:   hive设置中文字符utf-8 

根本原因:

源表字段值和输出分区值之间的关系是根据位置,而不是命名来匹配的。

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值