pyspark:比较给定列的值时从数据框中获取公共数据
Posted
技术标签:
【中文标题】pyspark:比较给定列的值时从数据框中获取公共数据【英文标题】:pyspark : fetch common data from dataframe when comparing values of given columns 【发布时间】:2018-08-13 10:48:31 【问题描述】:我有两个这样的 pyspark 数据框。 数据帧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】: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|
+----+---+
【讨论】:
以上是关于pyspark:比较给定列的值时从数据框中获取公共数据的主要内容,如果未能解决你的问题,请参考以下文章
PYSPARK:如何在 pyspark 数据框中找到两列的余弦相似度?
从 pyspark 数据框中获取多个(100+)列的空计数、最小值和最大值的最佳方法
pyspark:删除作为另一列值的子字符串,并从给定列的值中包含正则表达式字符