gpt4 book ai didi

apache-spark - 在连接中广播左表

转载 作者:行者123 更新时间:2023-12-04 12:55:31 25 4
gpt4 key购买 nike

这是我的加入:

df = df_small.join(df_big, 'id', 'leftanti')
好像 I can only broadcast the right dataframe .但是为了让我的逻辑工作(leftanti join),我必须有我的 df_small在左手边。
如何广播左侧的数据帧?

最佳答案

不幸的是,这是不可能的。
Spark 只能为右外连接广播左侧表。
您可以通过将左反分为 2 个连接(即内连接和左连接)来获得所需的结果。

df1 = spark.createDataFrame([1, 2, 3, 4, 5], IntegerType())
df2 = spark.createDataFrame([(1, 'a'), (2, 'b')], ['value', 'col'])
inner = df1.join(broadcast(df2), 'value', 'inner')
out = df1.join(broadcast(inner), 'value', 'left').where(col('col').isNull()).drop('col')
out.show()
+-----+
|value|
+-----+
| 3|
| 4|
| 5|
+-----+

df1.join(df2, 'value', 'left_anti').show()
+-----+
|value|
+-----+
| 5|
| 3|
| 4|
+-----+

关于apache-spark - 在连接中广播左表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68123190/

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