簡體   English   中英

Kafka Streams應用程序不使用消息

[英]Kafka streams application does not consume messages

我寫了一個小的kafka stream應用程序,對輸入流執行wordcount。我的代碼如下所示

import org.apache.kafka.common.serialization.Serde;
import org.apache.kafka.streams.KafkaStreams;
import org.apache.kafka.streams.kstream.KStream;
import org.apache.kafka.streams.kstream.KStreamBuilder;
import org.apache.kafka.streams.kstream.KTable;

import java.util.Arrays;
import java.util.Properties;

public class kafkastreams
{
    public static void main(String[] args) {
        Properties props=new Properties();
        props.setProperty(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG,"broker1,broker2");
        props.setProperty(StreamsConfig.APPLICATION_ID_CONFIG,"streams");

        props.setProperty(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,"latest");
        props.setProperty(StreamsConfig.KEY_SERDE_CLASS_CONFIG,Serdes.String().getClass().getName());
        props.setProperty(StreamsConfig.VALUE_SERDE_CLASS_CONFIG,Serdes.String().getClass().getName());

        KStreamBuilder builder=new KStreamBuilder();
        KStream<String,String> strings=builder.stream("input_topic");
        KTable<String,Long> wordcounts=
        strings.mapValues(value -> value.toLowerCase())
                .flatMapValues(value -> Arrays.asList(value.split(",")))
                .selectKey((k,v)->v)
                .groupByKey()
                .count("counts");

       wordcounts.to(Serdes.String(),Serdes.Long(),"outputtopic");

       KafkaStreams streams=new KafkaStreams(builder,props);
       streams.start();
    }
}

我的build.sbt文件看起來像這樣

name := "kstreams"

version := "0.1"

scalaVersion := "2.11.0"
libraryDependencies += "org.apache.kafka" %% "kafka" % "0.10.1.1"
libraryDependencies += "org.apache.kafka" % "kafka-streams" % "0.10.1.1"

我已經將應用程序打包到一個胖子罐中,並一直試圖以

java -cp /path/to/the/fat/jar java-class-name

提交工作后,除了“ Picked up JAVA_TOOL_OPTIONS: -Xmx1024m

我嘗試使用控制台生產者發送一些測試消息,但我在控制台上看不到任何響應,也沒有任何消息發送到輸出主題,我正在從控制台使用者監視它。

如果有人可以幫助您,那就太好了。

我在使用kerberized HDP群集(2.6.3)上,且kafka版本為0.10.1

謝謝。

檢查您是否正確提供了引導服務器

props.setProperty(
    StreamsConfig.BOOTSTRAP_SERVERS_CONFIG,
    "broker1,broker2"
); -->default is localhost:9092

確保您具有名為input_topicoutputtopic

由於您已在媒體資源中添加“最新”信息,因此在流式作業開始后,希望能收到發送到主題的消息

暫無
暫無

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

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