Apache Spark:摆脱没有数据移动的空分区

时间:2016-02-10 20:08:44

标签: apache-spark streaming apache-kafka rdd

我有一个spark streaming应用程序,可以监听Kafka主题。每隔n分钟,它会获得一大块数据RDD。我正在维护另一个RDD,其中新的块是Union - ed,然后是filter。它就像时间轴上的滑动窗口。所以我的代码是这样的:

val slidingRDD : RDD[myObject] =_

// In streaming context
myKafkaInputDStream.transform{ rdd => deserialize(rdd) }
myKafkaInputDStream.forEachRDD{ chunkRDD => slidingRDD = slidingRDD.union(chunkRDD) }
// do some more stuff
slidingRDD.filter( myObject.timestamp > threshold )

由于我在Kafka主题上有两个分区,因此我在chunkRDD上获得了两个分区。在每次运行时,slidingRDD中的分区数递增2。 filter导致一些空分区和一些只有很少对象的分区。

问题

因为,一个空分区也会产生一个任务,是否会对性能产生重大影响?有没有办法只删除空分区,没有任何数据移动(或避免repartition)?

0 个答案:

没有答案