Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何在Spark中高效地连接具有不同列集的数据帧?_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 如何在Spark中高效地连接具有不同列集的数据帧?

Apache spark 如何在Spark中高效地连接具有不同列集的数据帧?,apache-spark,pyspark,apache-spark-sql,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 selec

我有两个具有不同但重叠列集的表。我想以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列)的表。在Spark 1.62上运行129s,在Spark 2.01上运行319s,在pandas上运行1.2s。 为什么这么慢?这是某种臭虫吗使用spark可以更快地完成吗?

编辑: 我试着用编程的方式来做这件事,就像这里一样:-它甚至更慢


问题似乎是添加空列也许可以以不同的方式解决,或者这部分可以更快一些?

a)如何读取数据?b) 您是如何配置集群的?这只是一个测试设置,所以我通过./bin/pyspark在笔记本电脑上运行独立的spark实例。我用python对数据进行预处理,然后调用
X=sc.parallelize(行列表).toDF(列名)
,将其放入数据帧中。重点的可能重复是高效。你链接中的解决方案和我的一样慢。