在 Pyspark 中实现 Hive UNION
Implementing Hive UNION in Pyspark
我正在尝试从文件中读取 SQL 并在 Pyspark 作业中 运行 它。 SQL 的结构如下:
select <statements>
sort by rand()
limit 333333
UNION ALL
select <statements>
sort by rand()
limit 666666
这是我在 运行 时遇到的错误:
pyspark.sql.utils.ParseException: u"\nmismatched input 'UNION'
expecting {, '.', '[', 'OR', 'AND', 'IN', NOT, 'BETWEEN', 'LIKE',
RLIKE, 'IS', EQ, '<=>', '<>', '!=', '<', LTE, '>', GTE, '+', '-', '*',
'/', '%', 'DIV', '&', '|', '^'}
这是因为 UNION ALL/UNION 不被 spark SQL 支持还是跟解析出错了?
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)
我正在尝试从文件中读取 SQL 并在 Pyspark 作业中 运行 它。 SQL 的结构如下:
select <statements>
sort by rand()
limit 333333
UNION ALL
select <statements>
sort by rand()
limit 666666
这是我在 运行 时遇到的错误:
pyspark.sql.utils.ParseException: u"\nmismatched input 'UNION' expecting {, '.', '[', 'OR', 'AND', 'IN', NOT, 'BETWEEN', 'LIKE', RLIKE, 'IS', EQ, '<=>', '<>', '!=', '<', LTE, '>', GTE, '+', '-', '*', '/', '%', 'DIV', '&', '|', '^'}
这是因为 UNION ALL/UNION 不被 spark SQL 支持还是跟解析出错了?
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)