我正在尝试使用以下sql命令从配置单元表中删除一些分区:
alter table db.t1 drop if exists partition (date<'2019-10-03')
在蜂巢中效果很好:
hive> alter table db.t1 drop if exists partition (date<'2019-10-03');
OK
Time taken: 0.737 seconds
但是当我使用完全相同的sql命令使用PySpark时:
spark.sql("alter table db.t1 drop if exists partition (date<'2019-10-03')")
存在以下错误:
>>> spark.sql("alter table db.t1 drop if exists partition (date<'2019-10-03')")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/spark/python/pyspark/sql/session.py", line 710, 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__
File "/usr/lib/spark/python/pyspark/sql/utils.py", line 73, in deco
raise ParseException(s.split(': ', 1)[1], stackTrace)
pyspark.sql.utils.ParseException: u"\nmismatched input '<' expecting {')', ','}(line 1, pos 92)\n\n== SQL ==\nalter table db.t1 drop if exists partition (date<'2019-10-03')\n--------------------------------------------------------------------------------------------^^^\n"
这些是集群上的引擎版本:
PYSARPK版本:2.7.13
HIVE版本:2.3.6
任何帮助,指导或评论都表示赞赏。
尝试以下Spark的代码语句,似乎问题是带有特殊字符的,这里只是试图转义特殊字符,