Apache spark ApacheSpark:在不移动数据的情况下消除空分区

Apache spark ApacheSpark:在不移动数据的情况下消除空分区,apache-spark,streaming,apache-kafka,rdd,Apache Spark,Streaming,Apache Kafka,Rdd,我有一个spark streaming应用程序,它可以监听Kafka主题。每n分钟,它就会以RDD的形式获得一块数据。我正在维护另一个RDD,其中新块是Union-ed,然后是filtered。它就像时间轴上的滑动窗口。所以我的代码是这样的: val slidingRDD : RDD[myObject] =_ // In streaming context myKafkaInputDStream.transform{ rdd => deserialize(rdd) } myKafkaIn

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

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
中的分区数增加两个。
过滤器
会导致一些空分区和一些对象很少的分区

问题

因为空分区也会产生任务,所以会对性能产生重大影响吗?有没有办法只删除空分区,而不移动任何数据(或避免重新分区)