cdp搭建测试spark功能 遇到问题

公司集群由cdh换成了cdp。

用spark代码测试 读取hive内的ods数据经过map等算子转化,然后存取到另外一个dw表里。代码都在cdh里ok的,已经发布生产。

备注cdh, spark版本为2.4.0-cdh6.3.2 hive版本为 2.1.1-cdh6.3.2

cdp spark版本为2.4.7.7.1.7.0-551 hive版本 3.1.3000.7.1.7.0-551

本着简单的方式只修改了pom文件,然后打包放到linux去跑数。

出现如下错误

org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

这还由啥说的复制 Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient去百度下。

发现千篇一律的metastore不能启动没有启动 通过 hive metastore xxxxx启动了就好了。

然而我自己通过beeline已经能连接到了,所以上述问题肯定不存在

那么我报一个别人都不会报的错? 

首先看下这个报错是什么?不能实例化一个连接hiveMetaStore的session。

1.有可能metastore没开启,那么不能实例化。 排除了

2.我们代码的问题,实例化不行。

那么研究下2...继续看报错。

Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hive.shims.ShimLoader.getHadoopThriftAuthBridge()Lorg/apache/hadoop/hive/thrift/HadoopThriftAuthBridge;

看到了这句话? 说实话看不懂这个shim是啥啊。但是不妨碍我在idea里找到这个

 说实话我也看不出,毕竟设计到源码了。

但是我突然想到个问题,报的错是NoSuchMethodError,这是什么意思呢?

 突然间恍然大悟。仔细看下版本 hive-exec1.2.1

 

 额外说句 这个jar包 我之前一篇文章说过 关于acid的表,设计到了这个jar,所以我就知道这个jar不对,服务器上有这个jar

 然后我打包又打了一个,两个jar都有刚刚上述的shims类和方法,这不就报错了么?

在pom文件里 没有发现直接引用该jar。。。通过

 

 找到是 spark-hive包下的,所以排除就好了

 下面的metastore也要排除 否则会报同样的错,就是后面的类有点不一样原因同上

 附上成功的代码

 

 

 如果帮到你,点个赞是对我的鼓励,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值