如何在spark中平衡任务分区?

时间:2017-02-23 10:03:24

标签: apache-spark load-balancing partition

它为大数据运行了keyBymapflatMap转换。

让我们看看它:

enter image description here

以下是我的代码示例:

val data1 = sc.parallelize(Seq(("aa", 1), ("ba", 2), ("bc", 2), ("b", 3), ("c", 1)))
val data2 = sc.parallelize(Seq(("a", 3), ("b", 5)))

val result: RDD[(String, Int)] = data1
      .keyBy(_._1.substring(0, 1)) // key by first character
      .cogroup(data2)
      .filter { case (_, (_, data2Values)) => data2Values.nonEmpty }
      .flatMap { case (_, (data1Values, _)) => data1Values }

这在任务中并不均衡。为什么呢?

所以我尝试使用repartition,但它没有用。

问题

  1. 为什么分区会转到任务的一边?
  2. 有没有办法解决这个问题。

0 个答案:

没有答案