Apache spark 如何修复pyspark EMR笔记本上的错误-AnalysisException:无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
我正在尝试使用spark.SQL()或sqlContext.SQL()方法(这里spark是启动EMR Notebook时可用的SparkSession对象的变量)在公共数据集上运行SQL查询,使用EMR Notebook连接到安装了Hadoop、spark和Livy的EMR集群。 但在运行任何基本SQL查询时,我都会遇到错误:Apache spark 如何修复pyspark EMR笔记本上的错误-AnalysisException:无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient,apache-spark,hadoop,pyspark,amazon-emr,hive-metastore,Apache Spark,Hadoop,Pyspark,Amazon Emr,Hive Metastore,我正在尝试使用spark.SQL()或sqlContext.SQL()方法(这里spark是启动EMR Notebook时可用的SparkSession对象的变量)在公共数据集上运行SQL查询,使用EMR Notebook连接到安装了Hadoop、spark和Livy的EMR集群。 但在运行任何基本SQL查询时,我都会遇到错误: AnalysisException: u'java.lang.RuntimeException: java.lang.RuntimeException: Unable
AnalysisException: u'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;
u'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;'
Traceback (most recent call last):
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/context.py", line 358, in sql
return self.sparkSession.sql(sqlQuery)
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/session.py", line 767, in sql
return DataFrame(self._jsparkSession.sql(sqlQuery), self._wrapped)
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
answer, self.gateway_client, self.target_id, self.name)
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 69, in deco
raise AnalysisException(s.split(': ', 1)[1], stackTrace)
AnalysisException: u'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;'
我想使用SQL查询,所以我不想使用DataFrameAPI作为替代
这个spark EMR集群没有安装单独的Hive组件,我不打算使用它。
我试图寻找这个问题的各种原因,其中一个原因可能是EMR笔记本可能没有创建metastore_db的写入权限。然而,我无法证实这一点。
我试图在群集中的日志文件中找到此错误,但找不到,并且不确定哪个文件可能包含此错误,以便获得更多详细信息
重现问题的步骤:
AnalysisException: u'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;
u'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;'
Traceback (most recent call last):
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/context.py", line 358, in sql
return self.sparkSession.sql(sqlQuery)
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/session.py", line 767, in sql
return DataFrame(self._jsparkSession.sql(sqlQuery), self._wrapped)
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
answer, self.gateway_client, self.target_id, self.name)
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 69, in deco
raise AnalysisException(s.split(': ', 1)[1], stackTrace)
AnalysisException: u'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;'
我也有同样的问题,我意识到我的EMR集群上没有蜂巢
启动另一个群集并确保选择了配置单元后,该群集工作。笔记本电脑应在具有兼容配置单元版本的EMR群集上运行
如何在emr上使用spark启动hive?@kmkhan在创建集群时,只需在控制台上选择hive即可。或者,如果使用aws cli,请将Name=Hive添加到应用程序列表中。