每天我都越来越困惑。我正在学习使用带有蜂巢的spark,我在互联网上找到的每个教程都模糊地解释了这种关系首先,当人们说hive compatible with spark
时,这是什么意思。我下载了预建的spark,它的版本是2.1.1,我下载了蜂巢2.1.1。我的目标是从火花访问hive Metastore,但每次我运行spark查询我都会
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
如果您的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吗?根据{{3}}
为了处理当前随Hive 1.2 jar一起提供的Spark 2.1.0,用户需要使用Hive远程Metastore服务(hive.metastore.uris),其中以hive.metastore.schema.verification启动Metastore服务。任何Spark SQL上下文都为TRUE。这将强制Spark客户端使用较低版本的Hive Metastore(如Hive 2.1.0),使用较低版本的Hive jar(如Hive 1.2),而无需修改或更改Metastore数据库的现有Hive架构。
我确实有hive-schema-verification set to true
但仍然得到同样的错误。另外请花点时间查看this 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
请尝试详细说明您的答案或善意为我提供链接,以便我找到答案。我一直很困惑。
答案 0 :(得分:0)
带有Spark的配置单元:如果遇到与Metastore版本相关的错误,则以下meta存储jar和版本应在spark defaults.conf中设置或在提交时传递,每个conf是单独的参数 --conf spark.sql.hive.metastore.jars = / home / hadoopuser / hivemetastorejars / * --conf spark.sql.hive.metastore.version = 2.3.0