【发布时间】:2021-04-20 21:34:25
【问题描述】:
我必须在两个名为 dfA 和 dfB 的 DataFrame 之间找到对应的行:
dfA.show()
+---+-----+-------+
| id| name|address|
+---+-----+-------+
| 1| AAAA| Paris|
| 4| DDDD| Sydney|
+---+-----+-------+
dfB.show()
+---+-----+-------+
| id| name|address|
+---+-----+-------+
| 1| AAAA| Paris|
| 2| BBBB|NewYork|
| 3| CCCC| London|
| 4| DDDD| Sydney|
+---+-----+-------+
我使用如下构造的值列表:
val array = dfA
.select("id")
.map(r =>{r.getString(0)})
.collect()
array Output:
1
2
为了让两个DataFrames之间有对应的值:
val dfFilter = dfB.filter(dfB.col("id").isInCollection(array))
.select("id")
dfFilter.show()
+---+
| id|
+---+
| 1|
| 4|
+---+
如果只使用一个名为id 的列用于搜索,则此代码可以正常工作。
我的问题是如何在dfA 和dfB 之间使用几列(id、name、address)对常见行进行这项研究?
【问题讨论】:
标签: scala apache-spark