【发布时间】:2015-11-17 23:19:55
【问题描述】:
我有一个包含 30 条记录的 RDD(键/值对:键是时间戳,值是 JPEG 字节数组)
我正在运行 30 个执行程序。我想将此 RDD 重新分区为 30 个分区,以便每个分区获取一条记录并分配给一个执行程序。
当我使用rdd.repartition(30) 时,它会将我的 rdd 重新分区为 30 个分区,但有些分区获得 2 条记录,有些获得 1 条记录,有些则没有获得任何记录。
Spark 中有什么方法可以将我的记录平均分配到所有分区。
【问题讨论】:
-
RDD已经有4个分区
-
当您调用
repartition时,Spark 确实会重新分区您的数据,但所有分区不一定包含完全相同数量的记录。这里真正的问题是,为什么这很重要? -
嗨,我想使用 spark 流在 1 秒内对所有 30 条记录执行操作。现在我的算法需要大约 400 毫秒才能对 1 条记录执行操作。所以我想平均分配我的记录,以便每个执行者只对一条记录执行操作,这样我的 1 秒批次将立即完成。
标签: apache-spark