hive报错--code1/2/3

前言

  • hive的报错code1/2/3实在是太烦人了
  • 解决方法
    • 搜索application_,找到你的报错job的url

      • The url to track the job: http:省略。。。。/proxy/application_1620706700013_2342264/
    • 进入yarn搜索该job的id
      在这里插入图片描述

    • 点击log
      在这里插入图片描述

  • 点进去发现log是不全的,点击查看完整log
    在这里插入图片描述
  • 搜索error
  • 根据对应的error修改你的报错吧

实例

return code 1

原因1及解决:

  • ‘Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask’

  • 基本上是执行的HQL无法加入到对应的用户队列中。

  • 解决方法 1:

    • 执行HQL前,加入 set MapReduce.queue = QUEUE_CRA; CRA(用户名)
  • 解决方法 2:

    • hdfs dfs命令对文件夹下的文件赋予权限。使其可以进行操作。

原因2及解决

  • 报错:
    • FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
    • hive报错
  • 原因:
    • localtask出现了内存溢出
  • 解决方法1:
    • 调大localtask的内存(默认1G,调大到4G)
    • set hive.mapred.local.mem=4096
  • 解决方法2:
    • 直接关闭表的autojoin
    • set hive.auto.convert.join=false;

return code 2:

原因 1及解决:

  • HQL产生较大的笛卡尔积,撑爆了HIVE 执行的最大线程载荷。
  • 解决方法:
    • 优化HQL.

原因 2 及解决:

  • Hive运行成功之后,当输入select count(*) from XX或者插入数据时,居然碰到BUG。
  • 2016-04-14 12:31:56,199 Stage-1 map = 0%, reduce = 0%
    Ended Job = job_1460599682683_0005 with errors
    Error during job, obtaining debugging information…
    FAILED: Execution Error, return code 2 fromorg.apache.hadoop.hive.ql.exec.mr.MapRedTask
    MapReduce Jobs Launched:
    Stage-Stage-1: HDFS Read: 0HDFS Write: 0 FAIL
    Total MapReduce CPU Time Spent: 0 msec
  • 这个问题只是HIVE单方面的问题,而用Hadoop Job日志查看,却是YarnException: Unauthorized request to start container的问题。
  • 未经授权的请求,怎么会有这样的问题呢。网上说是各个节点的时间未同步的问题。
  • 解决方法:
    • 把时间进行修改,进行系统时间同步
  • 原文

原因3及解决

  • Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]:
    Fatal error occurred when node tried to create too many dynamic partitions.
    The maximum number of dynamic partitions is controlled by hive.exec.max.dynamic.partitions and hive.exec.max.dynamic.partitions.pernode. Maximum was set to: 100
  • 解释
    • 给的提示很明显,默认动态分区最大数量被设成了100,这是由这两个参数。。。控制的
  • 解决
    • 需要根据数据调整这两个参数
    • 第一个属性可确保创建的分区总数不超过500,
    • 第二个属性可确保单个reducer不会创建超过500个分区(假设两个值均设置为500)
set hive.exec.max.dynamic.partitions = 500
set hive.exec.max.dynamic.partitions.pernode = 500

原因4及解决

  • 报错
    • Error during job, obtaining debugging information…
  • 原因
    • namenode内存空间不够,JVM剩余内存空间不够新job运行所致
Error during job, obtaining debugging information...

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask MapReduce Jobs Launched:  Stage-Stage-1: Map: 1   Cumulative CPU: 5.67 sec   HDFS Read: 0 HDFS Write: 0 FAIL 
  • 解决
    • 设置成本地模式来执行任务试试
set hive.exec.mode.local.auto=true;

原因5及解决

return code 3:

原因1及解决

  • 报错
    • FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
  • 解决方法 1:
    • 对数据大的表进行GROUP BY ,减少数据量。
  • 解决方法 2:
    • set hive.auto.convert.join = false;
      • 说明:是不是依据输入文件的大小,将Join转成普通的Map Join
      • 默认值: false
    • set hive.ignore.mapjoin.hint = false;
      • 说明: 是否忽略mapjoin hint 即mapjoin标记
      • 默认值: true
    • set hive.exec.parallel = true;
      • 说明:是否并行提交任务
      • 默认值:false

原因2及解决

  • 6
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值