我必须在两个名为dfA和dfB的DataFrames之间找到对应的行
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)来研究公共行
发布于 2021-04-20 21:34:26
您可以执行半连接。只需在Seq中放置任意数量的列,即可用于过滤。
val result = dfA.join(dfB, Seq("id", "name", "address"), "left_semi")https://stackoverflow.com/questions/67179276
复制相似问题