首页 文章

DataFrame —连接/ groupBy-agg-分区

提问于
浏览
1

我可能对 join/groupBy-agg 有一个幼稚的问题。在 RDD 期间,每当我想要执行一个。 groupBy-agg,我曾经说过(PairRDDFunctions 的)reduceByKey 和可选的 Partition-Strategy(具有分区或 Partitioner 的数量)b。 Join(PairRDDFunctions)及其变体,我曾经有一种方法来提供多个分区

在 DataFrame 中,如何在此操作期间指定分区数?事后我可以使用 repartition()。但这将是工作的另一个阶段。

解决方案在连接期间增加分区/任务数量的一种解决方法是在“ spark-submit”期间将其设置为“ spark.sql.shuffle.partitions”。我试图查看是否有一种方法可以针对 groupBy-agg /连接的每个步骤以编程方式提供此功能?

以编程方式执行此操作的原因是,根据数据帧的大小,我可以使用更多或更少的任务来避免 OutOfMemoryError。

1 回答

  • 0

    抱歉,您不能在每个步骤中指定多个分区,但是:

    • Spark 将尝试对现有分区进行 re-use(如果存在),因此,例如,如果在进行 groupBy 之前重新分区,它应使用您指定的任意数量的分区(当然,假设您使用的是相同的键)。对于联接而言,如果两个数据帧都使用相同的键(必须是联接键)和相同的分区数进行分区,则不会重新组合。

    • 否则,您确实可以调整spark.sql.shuffle.partitions

相关问题