栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

bucketId out of range: -1 (state=,code=0)

bucketId out of range: -1 (state=,code=0)

hive select * from table 出现如上报错

背景 集群为cdp ,hive版本为3.1

集群最开始安装了hive 和tez 没有安装hive on tez。后面发现select count(1)的时候没有启动tez

最后是 hive 不安装 hiveserver2

 hive on tez 安装了 

 另外 这个版本的hive有时候是建外表的,有时候是内表,搞得我都怀疑自己了。。。

建议大家都show create table 看下

 说完了。然后我们是用datax从postgresql导数到hive。 这套我们之前在cdh上已经跑了很久了,没有任何问题。结果在cdp的时候报错了。

 .

唉 。最后百度无果,国内垃圾,只会抄袭。

set hive.mapred.mode=nonstrict;

set hive.optimize.ppd=true;

set hive.optimize.index.filter=true;

set hive.tez.bucket.pruning=true; --根据大佬所说 这条是关键

set hive.explain.user=false;

set hive.fetch.task.conversion=none; --实际上这条关键?

set hive.support.concurrency=true;

set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;

干,虽说不理解这是啥意思 但是复制了这段 确实就好了。

 还有另外一种。查原码

[HIVE-23051] Clean up BucketCodec - ASF JIRAhttps://issues.apache.org/jira/browse/HIVE-23051 

 直接说了这里一直为true。所以移除就行。自己替换下jar就行。

其实我猜测hive3.1默认是桶表,然后我又没有分桶 桶数量就是-1.这里就会报错

那么经过实测set hive.fetch.task.conversion=none; 这条set起了作用为什么?

因为这条作用的让hive直接加载文件,之前我们select*有问题 ,那么和这个直接加载也是有关系的。因为我们在select count(1)的时候不会报错 只会显示数据为0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751382.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号