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
中的分区数增加两个。过滤器
会导致一些空分区和一些对象很少的分区
问题:
因为空分区也会产生任务,所以会对性能产生重大影响吗?有没有办法只删除空分区,而不移动任何数据(或避免重新分区)