无法通过 PySpark 访问 Hive



我是Hadoop/Spark/Hive的新手!

我创建了一个单节点 linux(Ubuntu 18.04.1 LTS(虚拟机,在本地运行,具有以下功能;Hadoop 3.1.0;火花:火花 2.3.1,蜂巢:蜂巢-3.0.0

我的Hive正在使用标准的Derby DB,我可以通过终端访问Hive并创建数据库,表,然后查询这些表。我的metastore_db位于~/hivemetastore/metastore_db

我还创建了以下内容:

Hadoop FS -MKDIR -p/user/hive/warehouse

Hadoop FS -MKDIR -P/TMP/Hive

(注意 - 我在 $HIVE_HOME/conf 或 $SPARK_HOME/conf 下没有任何 hive-site.xml 文件(

但是,当我尝试从pyspark(通过终端(读取hive表时,出现错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/spark-2.3.1-bin-hadoop2.7/python/pyspark/sql/session.py", line 710, in sql return DataFrame(self._jsparkSession.sql(sqlQuery), self._wrapped)
File "/usr/local/spark-2.3.1-bin-hadoop2.7/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
File "/usr/local/spark-2.3.1-bin-hadoop2.7/python/pyspark/sql/utils.py", line 69, in decoraise AnalysisException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.AnalysisException: 'java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;'

我用来从pyspark访问hive的代码是:

from pyspark.sql import SparkSession
spark = SparkSession.builder.enableHiveSupport().getOrCreate()
spark.sql('show databases').show()

你启动元存储了吗?

类型:

hive --service metastore

使用rm metastore_db/*.lck移除锁或重新启动系统(或 PySpark shell(。

最新更新