Error during job, obtaining debugging information... FAILED: Execution Error, return code 2 from org

create table userbehavior_partitioned2(
user_id string,
item_id string,
category_id string,
behavior_type string
)
partitioned by (time string)


insert into userbehavior_partitioned2 partition(time)
select user_id,item_id,category_id,behavior_type,
from_unixtime(cast(time as bigint),'yyyy-MM-dd HH:mm:ss')time
from userbehavior;

上面的sql是创建分区表userbehavior_partitioned2,并从userbehavior
中select数据插入分区表中

执行代码之前先开启动态分区非严格模式

set hive.exec.dynamic.partition.mode=nonstrict;

再加一条命令

set hive.optimize.sort.dynamic.partition=true;

充分利用动态分区 job数能变少哦

执行上面sql
在这里插入图片描述

报错…
期间花了很长时间看了网上的很多资料,方法很多,但是治不了我这个报错,
但是后来有提示去看日志,于是去找日志
在hive目录下有logs 进去查看
在这里插入图片描述
看到了如下的具体错误信息
在这里插入图片描述
然后果断去hive那边

set hive.exec.max.dynamic.partitions.pernode=20000
set hive.exec.max.dynamic.partitions=20000

以为找到原因了 还是没用。

但是已经能知道点意思了,开始考虑… 意思是允许的最大分区不够,但是设置了那么大了还是不行,再去看看sql,发现分区的字段好像有点问题,from_unixtime(cast(time as bigint),‘yyyy-MM-dd HH:mm:ss’)time
这个分区字段到了时分秒了,那肯定不行了啊,有十万条数据就有十万个分区啊,肯定不行啊 分区是以天为单位,不就一下少了很多吗,改

create table userbehavior_partitioned2(
user_id string,
item_id string,
category_id string,
behavior_type string,
time string  				
)
partitioned by (dt string)


insert into userbehavior_partitioned2 partition(dt)
select user_id,item_id,category_id,behavior_type,
from_unixtime(cast(time as bigint),'yyyy-MM-dd HH:mm:ss')time,
from_unixtime(cast(time as bigint),'yyyy-MM-dd')dt
from userbehavior;

from_unixtime(cast(time as bigint),‘yyyy-MM-dd’)dt,以这个为分区 就ok了
再次执行 成功
总结:
很多错误表面提示是一样的,但是很多问题是各有各的原因的,最好的解决办法是去找日志,找到根本原因,再去解决。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值