在Pyspark中实现Hive联盟
我试图从文件中读取SQL并在Pyspark作业中运行它。SQL的结构如下所示:在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” 应为{,'.'、'['、'或'、'和'、'在',而不是
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语句添加括号就成功了,谢谢!哪种方法的性能更快?