从Spark访问Hive表

时间:2017-07-18 15:02:28

标签: python apache-spark hive pyspark

我遇到了一个问题:我无法使用spark-submit从Spark访问Hive表,而我可以使用pyspark shell。这是一段代码:

from pyspark.sql import SparkSession, HiveContext

spark = SparkSession \
   .builder \
   .appName("Python Spark SQL Hive integration example") \
   .enableHiveSupport() \
   .getOrCreate()

spark.sql("SHOW TABLES").show()

以下是pyspark(shell)的结果:

+--------+-------------+-----------+
|database|    tableName|isTemporary|
+--------+-------------+-----------+
| default|       table1|      false|
| default|       table2|      false|
+--------+-------------+-----------+

以下是spark-submit的结果:

+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
+--------+---------+-----------+

我尝试将spark conf目录添加到类路径中,使用hive-site.xml添加“--files”,我也尝试使用Hivecontext,并得到了相同的结果。我尝试使用scala:结果相同。

编辑:我没有连接到远程Hive服务器,而是连接到同一个

1 个答案:

答案 0 :(得分:0)

找到解决方案: 我在.py文件中使用了一些UDF(用户定义的函数)。出于某种原因,我认为它正在创建一个上下文而我没有使用正确的上下文。现在工作正常。