我有一个列表(非静态),该列表保留用于流数据的密钥。我想将这些密钥拆分给执行者以防止重复,但找不到合适的方法。
列表:
List<String> keyList = Arrays.asList("key1", "key2", "key3", "key4", "key5");
我在火花方面有3位执行者,取决于kafka主题上的分区数。流从如下所示的foreachPartition开始,我想按分区拆分列表项。
我的意思是,我想通过第一个分区上的键(键1,键2)处理数据。 key3用于第二个分区,key4和key5用于第三分区。
public void consume(JavaInputDStream<ConsumerRecord<String, String>> stream) {
stream.foreachRDD(rdd ->
rdd.foreachPartition(partitionOfRecords -> {
while (partitionOfRecords.hasNext()) {
// streaming....
}
**do processing for some key after streaming...**
}
}
有没有办法做到这一点?