在Pyspark中实现Hive联盟

在Pyspark中实现Hive联盟,pyspark,apache-spark-sql,pyspark-sql,Pyspark,Apache Spark Sql,Pyspark Sql,我试图从文件中读取SQL并在Pyspark作业中运行它。SQL的结构如下所示: select <statements> sort by rand() limit 333333 UNION ALL select <statements> sort by rand() limit 666666 以下是我运行时遇到的错误: pyspark.sql.utils.ParseException:u\n匹配的输入“UNION” 应为{,'.'、'['、'或'、'和'、'在',而不是

我试图从文件中读取SQL并在Pyspark作业中运行它。SQL的结构如下所示:

select <statements>
sort by rand()
limit 333333 
UNION ALL
select <statements>
sort by rand()
limit 666666
以下是我运行时遇到的错误:

pyspark.sql.utils.ParseException:u\n匹配的输入“UNION” 应为{,'.'、'['、'或'、'和'、'在',而不是,'介于'、'像', 例如,'IS',EQ,'!=',GTE,'+','-','*',等等, “/”、“%”、“DIV”、“&”、“|”、“^”}


这是因为spark SQL不支持UNION ALL/UNION,还是与解析出错有关?

PySpark和Hive在SQL语句中支持UNION。 我能够运行以下配置单元语句

(SELECT * from x ORDER BY rand() LIMIT 50)
UNION
(SELECT * from y ORDER BY rand() LIMIT 50)
在pyspark中,您也可以这样做

df1=spark.sql('SELECT * from x ORDER BY rand() LIMIT 50')
df2=spark.sql('SELECT * from y ORDER BY rand() LIMIT 50')
df=df1.union(df2)

为每个select语句添加括号就成功了,谢谢!哪种方法的性能更快?