pyspark:比较给定列的值时从数据框中获取公共数据

时间:2018-08-13 10:48:31

标签: apache-spark pyspark

我有两个像这样的pyspark数据帧。 data_frame A

+----+---+
|name1| id1|
+----+---+
|   a|  3|
|   b|  5|
|   c|  7|
+----+---+

data_frame B

+----+---+
|name2| id2|
+----+---+
|   a|  13|
|   b|  15|
|   c|  17|
|   d|  6|
|   e|  0|
|   f|  3|
+----+---+

如果name1(来自df a)和name2(来自df b)的值匹配,我想获取数据帧B的内容。如下图所示。 o / p数据框

+----+---+
|name2| id2|
+----+---+
|   a|  13|
|   b|  15|
|   c|  17|
+----+---+

我想避免计算上昂贵的方法,例如collect()等。 如何在Apache Spark中完成此操作?

1 个答案:

答案 0 :(得分:0)

from pyspark.sql.functions import *

df1.join(df2, df1.name1 == df2.name2).select('df2.*')

OR (using sql)

df1.registerTempTable("tableA")
df2.registerTempTable("tableB")

val result = sqlContext.sql("select b.name2, b.id2 from tableA a join tableB b on a.name1=b.name2")

result.show()
+----+----+
|name2| id2|
+----+----+
|   a|  13|
|   b|  15|
|   c|  17|
+----+---+