[英]Kafka Streams - assigning keys
我正在查看一些使用 Kafka 流的基本示例。 我注意到沒有設置鍵。 我試圖為每條記錄設置一個唯一的鍵。 一行文本被拆分為記錄——一個記錄就是一行中的一個單詞。 我目前使用的腳本為每條記錄附加了相同的密鑰。 我希望能夠讓每條記錄都有一個唯一的鍵,但我看不到它的好地方。 非常感謝一些幫助。 這是我現在所擁有的:
KStream<String, String> source = builder.stream(INPUT_TOPIC);
KStream<String, String> words = source.flatMapValues(new ValueMapper<String, Iterable<String>>() {
@Override
public Iterable<String> apply(String line) {
return Arrays.asList(line.split("\\W+"));
}
});
Long key = (long)(Math.random()*9000)+1000;
KStream<String, String> wordsKeyed = words.map((k, v) -> new KeyValue<>("xyx"+key, v));
wordsKeyed.to(OUTPUT_TOPIC);
它附加相同的密鑰,因為您只計算一個隨機值。
如果您希望每個鍵都是隨機的,請使用new KeyValue<>("xyx" + (Math.random()*9000+1000), ...)
如果您希望每個鍵都是唯一的(因為隨機數可以重疊),請使用AtomicInteger
和incrementAndGet()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.