Spark3报错: hive.ql.metadata.HiveException: Unable to fetch table Invalid method name: ‘get_table_req’
- 环境
hive版本1.1.0-cdh-5.10scala版本2.11.11hadoop版本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报错:内容请搜索靠谱客的其他文章。
发表评论 取消回复