簡體   English   中英

Kafka Streams - 分配密鑰

[英]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), ...)

如果您希望每個鍵都是唯一的(因為隨機數可以重疊),請使用AtomicIntegerincrementAndGet()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM