gpt4 book ai didi

apache-spark - Spark join 总是卡在同一个任务上,我该如何调试?

转载 作者:行者123 更新时间:2023-12-01 13:46:29 24 4
gpt4 key购买 nike

我正在使用 pyspark运行这种连接:

rdd1=sc.textFile(hdfs_dir1).map(lambda row: (getKey1(row),getData1(row)))
rdd2=sc.textFile(hdfs_dir2).map(lambda row: (getKey2(row),getData2(row)))
result=rdd1.join(rdd2).collect()

作业执行第一个 300任务相当快(每个~几秒),并在到达任务时挂起 301/308 ,即使我让它运行了几天。

我试图运行 pyspark shell 具有不同的配置(worker 数量、内存、CPU、内核、混洗率)并且结果总是相同的。

可能是什么原因?我该如何调试它?

最佳答案

Collect将尝试获取您加入应用程序驱动程序节点的结果,您将遇到内存问题。

join 操作会导致大量的 shuffle 操作,但您可以通过使用布隆过滤器 ( Bloom filter ) 来减少这种情况。您为一个分区中的键构建了布隆过滤器,广播和 filter另一个分区。应用此操作后,您应该期望更小的 RDD(如果您在两者中没有完全相同的键)和您的 join操作应该会快很多。

可以有效地收集布隆过滤器,因为您可以将一个元素设置的位与另一个元素设置的位与 OR 组合在一起,OR 是关联和可交换的。

关于apache-spark - Spark join 总是卡在同一个任务上,我该如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35638654/

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