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:转换DataFrame中给定列的值

pyspark:删除作为另一列值的子字符串,并从给定列的值中包含正则表达式字符

将定义集中的值设置为 Pandas 数据框中列的给定值(f.e. NaN)

比较两个数据框中列的值