鏖战大数据之java.lang.NoSuchFieldError:HIVE_STATUS_JDBC_TIMEOUT

报错如下:java.lang.NoSuchFieldError:HIVE_STATUS_JDBC_TIMEOUT

在这里插入图片描述
该问题出现在IDEA本地调试spark程序访问远程服务器上的hive数据时(在集群用spark-shell直接写spark-sql查询一般不会出现这种问题)。这个问题的意思是spark在初始化参数时没有找到HIVE_STATUS_JDBC_TIMEOUT这个参数。通过查阅资料以及源码发现在HIVE2.0之后的版本中删除了该参数,但spark却需要读这个参数的值,所以出现该问题。由于刚接触大数据不久,对底层还不够了解,无论是google还是百度对这个问题的解答星星点点,而且解决方案基本就是要么换版本,要么反编译将使用到该参数的地方给删掉再重新打包,步骤过于繁琐。仔细想想那么多人用这个版本,怎么可能大家都反编译再打包而且还没有几个人写博客出具体解决方案,所以一定是配置问题!这里赋上解决方案(使用版本spark2.3.3,hive2.3.6,hadoop2.9.2,hbase2.1.8,scala2.12.10):

1.确保在集群上使用spark-sql访问hive没有问题

2.确保本地主机(windows命令行)使用spark-sql访问集群hive没问题(非常关键)

2.1 解压全新原版spark(非集群上完成配置后)
2.2 将以下四个xml文件从集群上下载下来放spark-home/conf下(用不到hbase可以忽略掉hbase-site.xml)

在这里插入图片描述

2.3 将以下jar包从集群hbase文件目录下载到本地spark-home/jars下(htrace-core4-XXX在hadoop/share/hadoop/common/lib)

在这里插入图片描述

2.4 打开集群上hive的server2和metastore服务

hive --service hiveserver2 &
hive --service metastore &

2.5 打开spark-shell-》spark.sql(“your sql”).show查看是否出结果

3.检查你的maven项目resource下有没有上述4个xml文件,没有就放进去,然后更改hive-site.xml中的hive.metastore.warehouse.dir为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值