概述
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
我之前用的是spark
的2.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
的版本是基于hive
的1.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’所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复