如何使用Java在Spark结构化流中检查从Kafka获取数据?

时间:2019-07-11 01:11:27

标签: java apache-spark apache-kafka spark-structured-streaming

我正在尝试从kafka中获取数据以进行Spark结构化流式处理,但是我无法检查自己是否做得很好。我想在控制台上从kafka打印数据,但控制台上什么也没有。 可能是因为来自Kafka的大量数据,但我不知道。

我正在使用Windows10。我检查了kafka的端口是否由 “ netstat -an | findstr TARGET_IP”。 TARGET_IP表示kafka生产者的IP。 通过以上结果的PID,我检查了“任务列表/ FI“ PID eq 5406””。 5406是java.exe的PID,PID 5406的已用内存在不断增加。

public static void main( String[] args ) {
    SparkSession spark = SparkSession.builder()
            .master("local")
            .appName("App").getOrCreate();
    Dataset<Row> df = spark
            .readStream()
            .format("kafka")
            .option("kafka.bootstrap.servers", "TARGET_IP:TARGET_PORT")
            .option("subscribe", "TARGET_TOPIC")
            .option("startingOffsets", "earliest")
            .load();
    df.printSchema();
    StreamingQuery queryone = df.writeStream().trigger(Trigger.ProcessingTime(1000)).format("console").start();
    try {
        queryone.awaitTermination();
    } catch (StreamingQueryException e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

我测试了您的代码,可以打印了。

首先,您应该检查kafka topic,确保其中包含消息。

然后检查您启动的应用程序,确保它可以连接您的kafka经纪人。