Mysql 与Spark兼容的配置单元版本

Mysql 与Spark兼容的配置单元版本,mysql,hadoop,hive,Mysql,Hadoop,Hive,每天我都越来越困惑。我正在学习将spark与hive结合使用,我在互联网上找到的每一个教程都含糊不清地解释了两者之间的关系。首先,人们说hive与spark兼容是什么意思。我下载了预构建的spark,它的版本是2.1.1,我下载了hive 2.1.1。我的目标是从spark访问hive metastore,但每次运行spark查询时,我都会得到 Caused by: java.lang.reflect.InvocationTargetException Caused by: java.lang.

每天我都越来越困惑。我正在学习将spark与hive结合使用,我在互联网上找到的每一个教程都含糊不清地解释了两者之间的关系。首先,人们说
hive与spark兼容是什么意思。我下载了预构建的spark,它的版本是2.1.1,我下载了hive 2.1.1。我的目标是从spark访问hive metastore,但每次运行spark查询时,我都会得到

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

如果元存储版本不匹配,最后两条SQL语句中的一条或两条将导致此错误消息:error:java.lang.reflect.InvocationTargetException(state=,code=0)

我感到困惑的是,当人们说蜂巢火花兼容性是指火花版本和蜂巢版本吗?在我的例子中,这两个版本都是2.1.1(但我得到了这个错误),或者它们是指spark/jars文件夹中的
元存储数据库模式版本和hive元存储jar版本

现在我的配置单元元存储模式版本是2.1.0,我有
hive-metastore-1.2.1.spark2.jar
,所以我需要将配置单元元存储模式版本更改为1.2.1吗?据

为了处理当前随配置单元1.2 jar一起提供的Spark 2.1.0,用户需要使用配置单元远程元存储服务(Hive.metastore.uris),其中,对于任何Spark SQL上下文,元存储服务都以Hive.metastore.schema.verification作为TRUE启动。这将迫使Spark客户端使用较低的配置单元JAR(如配置单元1.2)与配置单元元存储的更高版本(如配置单元2.1.0)对话,而无需修改或更改元存储数据库的现有配置单元架构

我确实将
配置单元模式验证设置为true
,但仍然得到相同的错误。另外,请您花时间检查,他们说

spark.sql.hive.metastore.version 1.2.1(配置单元metastore的版本。可用选项为0.12.0到1.2.1。)

.结束我的问题,我的目标是1)理解与spark兼容的
hive背后的含义
2)使用spark连接到hive元存储
请尽量详细说明你的答案,或者好心地提供给我的链接,我可以找到我的答案。我真的很困惑。

带有Spark的Hive:如果您得到与metastore版本相关的错误,那么下面的metastore jar和版本应该在Spark defaults.conf中设置或在提交时传递,每个conf都是单独的参数 --conf spark.sql.hive.metastore.jars=/home/hadoopuser/hivemetastorejars/*
--conf spark.sql.hive.metastore.version=2.3.0

我在演练中遇到了类似的问题。你是怎么解决的?我想您已经指定了hive-metastore-2.1.1.spark2.jar的路径