在Spark流媒体中,在DStreams上实现自定义partiotioner的推荐方法是什么?
我已经在批处理模式下使用了JavaPairRDD.partitionBy(Partitioner),但是在JavaDStreamPairRDD上找不到等价物。
由于
答案 0 :(得分:1)
DStream上的分区是通过从接收器获取数据的过程创建的。由每个接收器创建的数据流以小批量spark.streaming.blockInterval
(默认为200毫秒)切割,每个微批次成为为流间隔生成的RDD上的分区。
因此,流分区是微批处理的结果,自定义分区程序在这个级别上没有意义。
如果您需要某个自定义形状的分区,您可以重新分配DStream的每个RDD:
dstream.foreachRDD{rdd =>
val repRDD = rdd.partitionBy(...)
... do stuff ...
}
请注意,您需要支付重新分区的随机价格,因此请小心使用。