【问题标题】:How to reduce too many shuffle using groupByKey()如何使用 groupByKey() 减少过多的随机播放
【发布时间】:2017-11-19 18:17:56
【问题描述】:

RDD 是键值对。 groupByKey() 可能会产生大量影响性能的随机播放。我想知道如何使用 groupByKey() 减少不必要的随机播放

如果我先重新分区RDD,然后groupByKey,会有帮助吗?

val inputRdd2 = inputRdd.partitionBy(new HashPartitioner(partitions=500) )

inputRdd2.groupByKey()

partitionBy() 是否也创建随机播放?谢谢

【问题讨论】:

    标签: apache-spark rdd


    【解决方案1】:

    如果我先重新分区RDD,然后groupByKey,会有帮助吗?

    不会的。 partitionBy 本身就是一个 shuffle,reduceByKey 无论如何都不会应用 map side reduction,所以总的来说它不会改变任何事情。

    很遗憾,在一般情况下,对您来说没有好消息。如果你想要groupByKey,你必须付出代价。虽然设计良好的数据收集和摄取过程可以增加数据局部性并减少下游消费者(如 Spark)的洗牌,但对于任意输入,您无能为力。

    从好的方面来说,许多groupBy 应用程序可以用不同的方式表达,尤其是在不需要精确结果的情况下。不同类型的概率数据结构可能是最突出的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 2023-03-23
      • 2017-02-15
      • 2014-07-26
      • 1970-01-01
      相关资源
      最近更新 更多