如何在Spark中有效地连接数据框与不同的列集?

时间:2016-10-19 21:34:25

标签: apache-spark pyspark apache-spark-sql

我有两个具有不同但重叠列集的表。我希望以pandas的方式连接它们,但它在spark中非常低效

X:
   A  B
0  1  3
1  2  4

Y:
   A  C
0  5  7
1  6  8

pd.concat(X, Y):
   A   B   C
0  1   3 NaN
1  2   4 NaN
0  5 NaN   7
1  6 NaN   8

我尝试使用Spark SQL来做...

select A, B, null as C from X union all select A, null as B, C from Y

... 非常慢。我将此查询应用于两个大小为:(79行,17330列)和(92行,16列)的表。在火花2.01上运行 129s ,在Spark 2.01上运行 319s ,在pandas上运行1.2s。 为什么这么慢?这是某种错误吗? 使用spark可以更快地完成吗?

编辑: 我尝试以编程方式执行此操作:how to union 2 spark dataframes with different amounts of columns - 它甚至更慢。

似乎问题是添加空列也许它可以以某种方式解决,或者这部分可以更快?

0 个答案:

没有答案