【发布时间】:2020-12-08 01:57:05
【问题描述】:
在相当新的环境中挖掘 POC 以获取 spark 并检查 spark 功能,但在 pyspark 终端中运行 sql 查询时遇到问题,而 Hive 正在工作,因为我们可以查询元数据。
知道这里发生了什么以及如何解决这个问题吗?
$ pyspark --driver-class-path /etc/spark2/conf:/etc/hive/conf
>>> from pyspark.sql import SparkSession
>>> from pyspark.sql import Row
>>> spark = SparkSession \
... .builder \
... .appName("sample_query_test") \
... .enableHiveSupport() \
... .getOrCreate()
>>> spark.sql("show tables in user_tables").show(5)
20/08/18 19:57:01 WARN conf.HiveConf: HiveConf of name hive.enforce.sorting does not exist
20/08/18 19:57:01 WARN conf.HiveConf: HiveConf of name hive.enforce.bucketing does not exist
20/08/18 19:57:01 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
+-----------+--------------------+-----------+
| database| tableName|isTemporary|
+-----------+--------------------+-----------+
|user_tables| a_2019| false|
|user_tables|abcdefgjeufjdsahh...| false|
|user_tables|testtesttesttestt...| false|
|user_tables|newnewnewnewnenwn...| false|
|user_tables|blahblahblablahbl...| false|
+-----------+--------------------+-----------+
only showing top 5 rows
>>> spark.sql("select count(*) from user_tables.test_table where date_partition='2020-08-17'").show(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/conda/lib/python3.7/site-packages/pyspark/sql/session.py", line 646, in sql
return DataFrame(self._jsparkSession.sql(sqlQuery), self._wrapped)
File "/opt/conda/lib/python3.7/site-packages/pyspark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1305, in __call__
File "/opt/conda/lib/python3.7/site-packages/pyspark/sql/utils.py", line 137, in deco
raise_from(converted)
File "<string>", line 3, in raise_from
**pyspark.sql.utils.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table test_spark_cedatatransfer. Invalid method name: 'get_table_req';**
集群信息:
$ hive --version
Hive 1.1.0-cdh5.13.0
Subversion file:///data/jenkins/workspace/generic-package-ubuntu64-16-04/CDH5.13.0-Packaging-Hive-2017-10-04_10-50-44/hive-1.1.0+cdh5.13.0+1269-1.cdh5.13.0.p0.34~xenial -r Unknown
Compiled by jenkins on Wed Oct 4 11:46:53 PDT 2017
$ pyspark --version
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.0.0
/_/
Using Scala version 2.12.10, OpenJDK 64-Bit Server VM, 1.8.0_252
Branch HEAD
Compiled by user ubuntu on 2020-06-06T11:32:25Z
Revision 3fdfce3120f307147244e5eaf46d61419a723d50
Url https://gitbox.apache.org/repos/asf/spark.git
$ hadoop version
Hadoop 2.6.0-cdh5.13.0
Subversion http://github.com/cloudera/hadoop -r 42e8860b182e55321bd5f5605264da4adc8882be
Compiled by jenkins on 2017-10-04T18:50Z
Compiled with protoc 2.5.0
From source with checksum 5e84c185f8a22158e2b0e4b8f85311
This command was run using /usr/lib/hadoop/hadoop-common-2.6.0-cdh5.13.0.jar
很明显,我添加了 hive conf 以确保使用相同的元存储,并且在进行插入覆盖的简单查询时失败!
【问题讨论】:
-
我认为 CDH 还不支持 Spark 3。另外,Spark 3 可能使用了更高版本的 Hive 本身
-
@OneCricketeer 我已经分享了环境细节,你能建议正确的 pyspark 版本或解决方法吗?如果必要,将尝试与集群管理员沟通以进行必要的更改
-
从 CDH 6 开始,包括 Spark 2,according to documentation。
-
我们有 spark 1.6.0 附带的 cdh 5.13.0 > 那么哪个 pyspark 应该是理想的? (来自版本:2.1.2、2.1.3、2.2.0.post0、2.2.1、2.2.2、2.2.3、2.3.0、2.3.1、2.3.2、2.3.3、2.3.4、 2.4.0、2.4.1、2.4.2、2.4.3、2.4.4、2.4.5、2.4.6、3.0.0)
-
无... 您需要单独下载 Spark 1.6,因为您不能
pip install低于 2.1.2 的版本
标签: apache-spark hadoop pyspark hive cloudera