gpt4 book ai didi

dataframe - 根据指定拒绝列表条件的另一个 DataFrame 过滤 Spark DataFrame

转载 作者:行者123 更新时间:2023-12-03 07:27:22 28 4
gpt4 key购买 nike

我有一个 largeDataFrame(多列和数十亿行)和一个 smallDataFrame(单列和 10,000 行)。

只要 largeDataFrame 中的 some_identifier 列与smallDataFrame

这是一个例子:

大数据框

some_idenfitier,first_name
111,bob
123,phil
222,mary
456,sue

小数据框

some_identifier
123
456

期望输出

111,bob
222,mary

这是我丑陋的解决方案。

val smallDataFrame2 = smallDataFrame.withColumn("is_bad", lit("bad_row"))
val desiredOutput = largeDataFrame.join(broadcast(smallDataFrame2), Seq("some_identifier"), "left").filter($"is_bad".isNull).drop("is_bad")

有更干净的解决方案吗?

最佳答案

在这种情况下,您需要使用 left_anti 连接。

左反连接左半连接相反。

它根据给定的键从左表中过滤出右表中的数据:

largeDataFrame
.join(smallDataFrame, Seq("some_identifier"),"left_anti")
.show
// +---------------+----------+
// |some_identifier|first_name|
// +---------------+----------+
// | 222| mary|
// | 111| bob|
// +---------------+----------+

关于dataframe - 根据指定拒绝列表条件的另一个 DataFrame 过滤 Spark DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39887526/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com