DataFrame --- join / groupBy-agg - 分区

时间:2017-07-11 21:10:12

标签: apache-spark join group-by apache-spark-sql spark-dataframe

我可能对join / groupBy-agg有一个天真的问题。在RDD期间,每当我想表演时 一个。 groupBy-agg,我曾经说过reduceByKey(PairRDDFunctions)和一个可选的Partition-Strategy(分区数或分区数) 湾join(of PairRDDFunctions)及其变体,我曾经有办法提供多个分区

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

在连接期间增加分区/任务数量的一种方法是设置' spark.sql.shuffle.partitions'在spark-submit期间它有一些所需的数字。我试图看看有没有办法以编程方式为groupBy-agg / join的每一步提供这个?

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

1 个答案:

答案 0 :(得分:0)

AFAIK您无法在每个步骤指定多个分区,但是:

  • Spark会尝试重新使用现有分区(如果存在),因此如果您在执行groupBy之前重新分区,它应该使用您指定的任意数量的分区(假设您'当然重新使用相同的键)。对于连接,如果两个数据帧都使用相同的键(必须是连接键)进行分区,则相同。相同的分区数量,它不会重新洗牌。
  • 否则你确实可以调整spark.sql.shuffle.partitions