代码之家  ›  专栏  ›  技术社区  ›  Alina

火花减速器

  •  1
  • Alina  · 技术社区  · 7 年前

    对于作用于单个RDD的操作,例如reduceByKey(), 在飞机上跑步 预分区 RDD将导致每个 在一台机器上,只需要 最终,从每个工作节点发送回

    然而,在 this answer 作者说,不需要预分区,因为:

    首先

    那么,如果reduceByKey()将首先聚合每个执行器上的元素,而不剥离数据,那么为什么一本书会建议进行预分区呢?

    2 回复  |  直到 7 年前
        1
  •  0
  •   zero323 little_kid_pea    7 年前

    这本书并没有真正建议预分区。它只描述 *ByKey 应用于分区时的方法 RDD 是一次洗牌 单一的 reduceByKey ,是没有道理的。

    事实上,如果数据包含 唯一键和 P 分区,场景中洗牌的大小 还原键 partitionBy 一个人。

    如果你想申请 倍数 资产摊销成本 分区依据 接着是一套 *byKey *Join *副钥匙 方法。类似地,如果您已经将数据作为不同操作的一部分进行了洗牌,并且稍后将应用洗牌操作,那么您应该尝试保留现有的分区。然而,这并不意味着你应该总是喜欢 分区依据 第一。

        2
  •  1
  •   Garvit    7 年前

    上面的答案大致概括了reducebykey和partitionbymethods。

    推荐文章