Hive jdbc执行seelct 语句时报 return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

本文介绍了在使用Hive表时遇到的权限问题及解决方案,包括如何正确地进行条件过滤、使用hive jdbc避免权限问题,以及通过设置队列名称来解决提交任务时的权限错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考1
解决方法:
      对HIVE表进行条件过滤,必须要以partition为首要条件。
如:select distinct hdate from t_stage_access where hdate like '2014-07-%' and dt='2014-07-28'
hdate是partition。
不行


参考2
解决方式:用hive jdbc建表,用hive jdbc执行操作。

用hive shell建表,用hive jdbc执行操作可能会导致权限问题,引起以上两个错误。在删除原表,改用jdbc建表之后,异常解决了。

不行

最终找了我们的DBA,hive报错:

没有设置下队列,不允许提交到default队列中

2017-06-20T17:05:26,685ERROR [HiveServer2-Background-Pool: Thread-180955]: exec.Task(SessionState.java:printError(1038)) - Job Submission failed with exception'java.io.IOException(Failed

to run job : Userhduser1701 cannot submit applications to queue root.default)'

java.io.IOException:Failed to run job : User hduser1701 cannot submit applications to queueroot.default


原来是代码里没有指定队列,默认访问默认队列,没有权限                       

 //set queue

 stmt.execute(mysql[0]);

 res = stmt.executeQuery(mysql[1]);

Set mapreduce.job.queuename=queue_xxx_01;


完美解决。。。。
根据提供的引用内容,"return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask" 是一个Hive错误,表示在执行MapReduce任务时出现了错误,并且返回代码为2。这种错误通常与Hive查询或作业的执行有关。 要解决这个问题,可以尝试以下几个步骤: 1. 检查Hive日志:查看Hive日志以获取更多详细信息,了解错误的具体原因和上下文。日志通常位于Hive的日志目录中,可以使用以下命令找到日志目录: ```shell hive --service metastore ``` 在日志目录中查找包含错误信息的日志文件,并查看其中的错误堆栈跟踪和其他相关信息。 2. 检查Hadoop集群状态:确保Hadoop集群正常运行,并且所有必需的服务和组件都处于活动状态。可以使用以下命令检查Hadoop集群的状态: ```shell hadoop dfsadmin -report ``` 确保没有任何故障或错误报告,并且所有节点都处于正常状态。 3. 检查Hive配置:检查Hive的配置文件,确保所有必需的配置项都正确设置。特别是,确保Hive的元数据存储(例如MySQL或Derby)可用,并且Hive的配置与元数据存储的配置一致。 4. 检查查询语句:如果错误发生在执行查询语句时,检查查询语句本身是否正确。确保查询语句中的表名、列名和语法都是正确的,并且与Hive表的定义相匹配。 5. 检查资源限制:如果错误发生在执行作业时,检查Hadoop集群的资源限制。确保作业所需的资源(例如内存、CPU等)可用,并且没有超过集群的限制。 这些是解决"return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask"错误的一些常见步骤。根据具体情况,可能需要进一步调查和排除其他可能的问题。如果问题仍然存在,请提供更多详细信息以便进一步帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值