本文介绍了JavaDStreamPairRDD的自定义分区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在电光流媒体中,推荐的在DStream上实现自定义分区程序的方式是什么?
我在批处理模式下使用了JavaPairRDD.artitionBy(分区程序),但在JavaDStreamPairRDD上找不到等效的分区程序。
谢谢
推荐答案
DStream上的分区是通过从接收方获取数据的过程创建的。由每个接收器创建的数据流被切割成大小spark.streaming.blockInterval
(缺省为200ms)的微批。每个微批成为针对流传输间隔产生的RDD上的一个分区。因此,流分区是微批处理的结果,而自定义分区程序在此级别没有意义。
如果需要特定自定义形状的分区,可以重新分区DStream的每个RDD:
dstream.foreachRDD{rdd =>
val repRDD = rdd.partitionBy(...)
... do stuff ...
}
请注意,您要为重新分区付出洗牌代价,因此请谨慎使用。
这篇关于JavaDStreamPairRDD的自定义分区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!