【发布时间】:2019-03-12 16:47:12
【问题描述】:
我得到了一个在直线中运行良好的 DDL 查询,但是当我尝试在 sparkSession 中运行相同的查询时,它会引发解析异常。
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, HiveContext
# Initialise Hive metastore
SparkContext.setSystemProperty("hive.metastore.uris","thrift://localhsost:9083")
# Create Spark Session
sparkSession = (SparkSession\
.builder\
.appName('test_case')\
.enableHiveSupport()\
.getOrCreate())
sparkSession.sql("CREATE EXTERNAL TABLE B LIKE A")
Pyspark 异常:
pyspark.sql.utils.ParseException: u"\nmismatched input 'LIKE' expecting <EOF>(line 1, pos 53)\n\n== SQL ==\nCREATE EXTERNAL TABLE B LIKE A\n-----------------------------------------------------^^^\n"
如何使 hiveQL 函数在 pySpark 中工作? 问题似乎是查询的执行方式像 SparkSQL-Query 而不是 HiveQL-Query,即使我为 sparkSession 激活了 enableHiveSupport。
【问题讨论】:
-
发生同样的异常
-
我无法复制此错误,但请尝试其他解决方法:
sparkSession.sql("CREATE EXTERNAL TABLE B AS (SELECT * FROM A WHERE 1=0)") -
在尝试运行查询之前尝试运行
sparkSession.sql("use name_of_target_hive_db")之类的内容。 -
这些都不适合我。如前所述,查询是有效的 HQL 语法,并且在直线范围内永远不会失败。 Hive 支持似乎仍然不起作用。
标签: apache-spark hive pyspark hiveql