如何根据2列比较PySpark中的2个数据帧?

问题描述 投票:0回答:1

在PySpark中,我试图比较两个常见列的数据帧。 Tha数据帧看起来像这样:

df1   ...   ...
aa1   ...   ...
bb2   ...   ...
ab3   ...   ...
cc4   ...   ...

df2   ...   ...
a1    ...   ...
b3    ...   ...

我们的想法是检查df1是否包含子字符串为df2的行。如果是这样,请获取这些行。上面的结果将是:

result
aa1
ab3

或者在伪代码中:

df1.filter(df1.col.likes(df2.col))

提前致谢!

python-3.x apache-spark pyspark
1个回答
0
投票

你需要一个leftsemi加入。

语法将是df1.join(df2, how='leftsemi', on="join condition")

from pyspark.sql import functions as F

df1.show()
+---+
|  a|
+---+
|aa1|
|bb2|
|ab3|
|cc4|
+---+

df2.show()
+---+
|  b|
+---+
| a1|
| b3|
+---+

df1.join(F.broadcast(df2), how='leftsemi', on=F.col('a').endswith(F.col('b'))).show()
+---+
|  a|
+---+
|aa1|
|ab3|
+---+
© www.soinside.com 2019 - 2024. All rights reserved.