JavaDStreamPairRDD的自定义分区

时间:2015-04-27 05:53:30

标签: spark-streaming

在Spark流媒体中,在DStreams上实现自定义partiotioner的推荐方法是什么?

我已经在批处理模式下使用了JavaPairRDD.partitionBy(Partitioner),但是在JavaDStreamPairRDD上找不到等价物。

由于

1 个答案:

答案 0 :(得分:1)

DStream上的分区是通过从接收器获取数据的过程创建的。由每个接收器创建的数据流以小批量spark.streaming.blockInterval(默认为200毫秒)切割,每个微批次成为为流间隔生成的RDD上的分区。 因此,流分区是微批处理的结果,自定义分区程序在这个级别上没有意义。

如果您需要某个自定义形状的分区,您可以重新分配DStream的每个RDD:

dstream.foreachRDD{rdd => 
val repRDD = rdd.partitionBy(...)
... do stuff ...
}

请注意,您需要支付重新分区的随机价格,因此请小心使用。