gpt4 book ai didi

apache-spark - Spark >2 - 连接操作期间的自定义分区键

转载 作者:行者123 更新时间:2023-12-01 12:09:14 25 4
gpt4 key购买 nike

我想知道我们是否可以强制 Spark 在两个数据帧的连接操作期间使用自定义分区键。

例如,让我们考虑一下

df1: DataFrame - [groupid, other_column_a]
df2: DataFrame - [groupid, other_column_b]

如果我跑

df_join = df1.join(df2, "groupid")

Spark 会将“groupid”设置为分区键,并对每个分区执行连接。问题是,如果分区太大,这可能会耗尽机器上的内存。

但是,理论上似乎可以使用 (groupid, other_column_a) 作为分区键执行连接(以减少每个分区的大小)。

可以用 Spark 来做吗?我试着做df1.repartition("group_id","other_column_a") 预先但它被连接覆盖(我用 df_join.explain() 检查它)。我在网上找不到任何说明如何执行此操作的资源。

谢谢!

Visual explanation

最佳答案

如果你加入了一些整数列,你可以对你的数据帧进行分区,我对一些数字进行模数..即你想要多少个分区..这样共享一些公共(public)哈希值的id将是在一个分区中组合在一起.. 然后您可以通过分解多个连接来执行连接.. 在循环中连续连接每个分区.. 我已经详细解释了这种情况.. Efficient pyspark join

关于apache-spark - Spark >2 - 连接操作期间的自定义分区键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53538964/

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