【问题标题】:DataFrame --- join / groupBy-agg - partitionDataFrame --- join / groupBy-agg - 分区
【发布时间】:2017-07-11 21:10:11
【问题描述】:

我可能对加入/groupBy-agg 有一个幼稚的问题。在RDD的日子里,每当我想表演时 一种。 groupBy-agg,我曾经说 r​​educeByKey(PairRDDFunctions 的)带有可选的 Partition-Strategy(带有分区数或 Partitioner) 湾。 join (of PairRDDFunctions) 及其变体,我曾经有一种方法来提供分区数

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

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

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

【问题讨论】:

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


    【解决方案1】:

    AFAIK 你不能在每个步骤中指定多个分区,但是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 2020-03-03
      • 2016-11-16
      相关资源
      最近更新 更多