我是靠谱客的博主 明理毛豆,最近开发中收集的这篇文章主要介绍Spark3报错: hive.ql.metadata.HiveException: Unable to fetch table Invalid method name: get_table_reqSpark3报错: hive.ql.metadata.HiveException: Unable to fetch table Invalid method name: ‘get_table_req’,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Spark3报错: hive.ql.metadata.HiveException: Unable to fetch table Invalid method name: ‘get_table_req’

  • 环境
    • hive版本1.1.0-cdh-5.10
    • scala版本2.11.11
    • hadoop版本2.6.0

我之前用的是spark2.4.4的发行版的包,现在想切换成spark3.0版本包。
调用spark.sql("select * from xxxDbname.xxtable")便会出现下面的错误。
报错截图如下:
在这里插入图片描述
这里我用的spark的包是spark官网上的
spark-3.0.0-preview2
这个版本,它打包的hive版本是2.3.6
而我所用的hive版本是1.1.0
所以会报出上述错误,相关的错误原因我已经在源码上面查看到了

错误详情:
github上面直接下载source code,然后分析代码里面的实现细节:
在文章最前面,我只是做了一个对表的select操作
spark3.0的包里面,它会调用:
在这里插入图片描述
调用上述的方法,然而这个是hive版本为2.3.6支持的方法,所以这个client在我本地调用不到get_table_req的方法,所以报出一个Invalid method name:get_table_req


然而,在先前的spark2.4.5版本中,它调用的方法是:
在这里插入图片描述
两者实现不一样,spark2.4.5中发布hive的版本是基于hive1.2.1版本实现的,可以看到实现的细节也是不一样的。

所以接下来怎么做呢?手动构建spark发行版jar包,指定hive的版本为1.2.1,为什么是1.2.1呢,因为这个在源码的pom文件当中说明了!

总结

是时候要将spark源码学习一下了,都3.0了…

最后

以上就是明理毛豆为你收集整理的Spark3报错: hive.ql.metadata.HiveException: Unable to fetch table Invalid method name: get_table_reqSpark3报错: hive.ql.metadata.HiveException: Unable to fetch table Invalid method name: ‘get_table_req’的全部内容,希望文章能够帮你解决Spark3报错: hive.ql.metadata.HiveException: Unable to fetch table Invalid method name: get_table_reqSpark3报错: hive.ql.metadata.HiveException: Unable to fetch table Invalid method name: ‘get_table_req’所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部