DataGrip连接hive

报错: org.apache.hive.org.apache.thrift.TApplicationException: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{set:hiveconf:hive.server2.thrift.resultset.default.fetch.size=1000, use:database=default}).

我遇到这个问题的原因:hive版本与DataGrip里的hive驱动版本不一致

问题解决步骤[正常DataGrip连接hive也可参考]

1.查看hive版本

[root@bigdata105 ~]# locate */hive/lib/hive*jar

可以看到我的hive是1.1.0版本的

2.查看DataGrip中,hive驱动版

点击 Apache Hive

可以看到是3.1.2版本,驱动的版本太高了,所以报错

3.新建一个hive驱动

删除其他驱动文件

选中驱动,然后点击上面的减号即可删除,驱动名Name可以修改

4.拷贝hive中的驱动到DataGrip驱动目录

拷贝到我的DataGrip驱动目录:windows上的C:\Users\Administrator\AppData\Roaming\JetBrains\DataGrip2021.2\jdbc-drivers\Hive\1.1

这个目录是可以自己任意指定的,为了方便就放到DataGrip放驱动的目录下。还可以加个版本号文件夹更清晰明了

5.给我们在DataGrip新建的hive驱动指定驱动文件

6.开启hive服务,如果已启动则忽略

[root@bigdata105 hive]# hive --service hiveserver2

这个命令执行后,不能关闭窗口,关闭窗口服务就停止了
可以使用后台运行方式

[root@bigdata105 hive]# nohup hive --service hiveserver2 &

7.连接、测试

DataGrip查询hive表带有where条件时报错:
return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

报错原因:

        ①有可能是hql有问题
        ②yarn资源不足
        ③用户权限不足

我的问题是因为当查询语句里面含有where条件时会启用mr,而mr的过程会有写的过程,而我的连接配置信息里没有指定用户名,默认使用windows用户所以没有写的权限。

解决方法:

修改连接配置信息,添加用户名,一般为hdfs

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值