使用另一个df(两个df中的同一列)spark scala的列过滤df

h43kikqp  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(671)

我正在尝试使用另一个Dataframedf2的列过滤Dataframedf1,列是country\u id。我想将第一个Dataframe的所有行减少到第二个df上的国家。举个例子:

+--------------+------------+-------+
|Date          | country_id | value |
+--------------+------------+-------+
|2015-12-14    |ARG         |5      |
|2015-12-14    |GER         |1      |
|2015-12-14    |RUS         |1      |
|2015-12-14    |CHN         |3      |
|2015-12-14    |USA         |1      |

+--------------+------------+
|USE           | country_id |
+--------------+------------+
|  F           |RUS         |
|  F           |CHN         |

Expected:

+--------------+------------+-------+
|Date          | country_id | value |
+--------------+------------+-------+
|2015-12-14    |RUS         |1      |
|2015-12-14    |CHN         |3      |

我怎么能这么做?我是新的Spark,所以我想使用可能相交?或者其他方法更有效?
提前谢谢!

mcvgt66p

mcvgt66p1#

可以使用左半联接:

val DF3 = DF1.join(DF2, Seq("country_id"), "left_semi")

DF3.show

//+----------+----------+-----+
//|country_id|      Date|value|
//+----------+----------+-----+
//|       RUS|2015-12-14|    1|
//|       CHN|2015-12-14|    3|
//+----------+----------+-----+

也可以使用内部联接:

val DF3 = DF1.alias("a").join(DF2.alias("b"), Seq("country_id")).select("a.*")

相关问题