报错: 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\DataGrip.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
如果觉得《DataGrip连接hive》对你有帮助,请点赞、收藏,并留下你的观点哦!