每天我都越来越困惑 . 我正在学习使用带有蜂巢的spark,我在互联网上找到的每个教程都模糊地解释了这种关系首先,当人们说 hive compatible with spark 时,这意味着什么 . 我下载了预建的火花,它的版本是2.1.1,我下载了hive 2.1.1 . 我的目标是从火花访问蜂巢Metastore,但每次我运行spark查询我得到

Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

根据this website

如果您的Metastore版本不匹配,则最后两个SQL语句中的任何一个或两个都将导致此错误消息:错误:java.lang.reflect.InvocationTargetException(state =,code = 0)

我很困惑的地方是人们说蜂巢火花兼容性他们是指火花版和蜂巢版?在我的情况下,这两个都是2.1.1(但我收到此错误)或他们的意思 metastore database schema version and hive-metastore jar version inside spark/jars folder

现在我的hive metastore-schema版本是2.1.0,我有 hive-metastore-1.2.1.spark2.jar ,那么我需要将hive-metastore-schema版本更改为1.2.1吗?根据this website

为了处理当前随Hive 1.2 jar一起提供的Spark 2.1.0,用户需要使用Hive远程Metastore服务(hive.metastore.uris),其中启动Metastore服务时hive.metastore.schema.verification为TRUE for任何Spark SQL上下文 . 这将强制Spark客户端使用较低版本的Hive Metastore(如Hive 2.1.0),使用较低版本的Hive jar(如Hive 1.2),而无需修改或更改Metastore数据库的现有Hive架构 .

我确实有 hive-schema-verification set to true 但仍然得到同样的错误 . 也请花点时间查看spark-website,他们说的地方

spark.sql.hive.metastore.version 1.2.1(Hive Metastore的版本 . 可用选项为0.12.0到1.2.1 . )

. 回答我的问题,我的目标是1)理解背后的含义 hive compatible with spark 2)使用spark连接到hive Metastore请尝试详细说明你的答案或善待我提供链接,我可以找到我的答案 . 我很困惑 .