analysisexception:无法示例化org.apache.hadoop.hive.ql.metadata.sessionhivemetastoreclient

3duebb1j  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(538)

我正在尝试使用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 to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;

我想使用sql查询,所以我不想使用dataframeapi作为替代。
这个spark emr集群没有安装单独的hive组件,我不打算使用它。我试图寻找导致此问题的各种原因,其中一个原因可能是emr notebook可能没有创建metastore\u db的写入权限。不过,我无法证实这一点。我试图在群集中的日志文件中找到此错误,但找不到,并且不确定哪个文件可能包含此错误,以便获得更多详细信息。
重现问题的步骤:
使用控制台创建aws emr群集,并使用快速启动视图,选择spark选项。它将包括Hadoop2.8.5Yarn上的Spark2.4.3、Ganglia3.7.2和Zeppelin0.8.1。它既可以有1个主节点和2个核心节点,也可以只有1个主节点。
从emr页面的notebooks链接创建一个emr笔记本,将其连接到您刚刚创建的集群并打开它(默认情况下,所选内核将是pyspark,如笔记本右上角所示)。
我使用的代码在amazon reviews数据集上运行spark.sql查询,该数据集是公共的。
代码:


# Importing data from s3

input_bucket = 's3://amazon-reviews-pds'
input_path = '/parquet/product_category=Books/*.parquet'
df = spark.read.parquet(input_bucket + input_path)

# Register temporary view

df.createOrReplaceTempView("reviews")
sqlDF = sqlContext.sql("""SELECT product_id FROM reviews LIMIT 5""")

我希望从这个数据集中返回5个产品标识,但是我得到了错误:

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;'
byqmnocz

byqmnocz1#

笔记本电脑应在具有兼容配置单元版本的emr群集上运行

fwzugrvs

fwzugrvs2#

我也有同样的问题,我意识到我的emr集群上没有Hive。
在启动另一个集群并确保选择了hive之后,它就工作了。

相关问题