【问题标题】:How can I check I get data from Kafka in Spark-structured-streaming with Java?如何使用 Java 在 Spark-structured-streaming 中检查我从 Kafka 获取的数据?
【发布时间】:2019-11-20 15:43:51
【问题描述】:

我正在尝试将数据从 kafka 获取到 spark-structured-streaming,但我无法检查我是否做得很好。我想在控制台上打印来自 kafka 的数据,但控制台上什么也没有。 这可能是因为来自 Kafka 的大量数据,但我不知道。

我使用的是 Windows 10。我检查了 kafka 的端口是由 “netstat -an | findstr TARGET_IP”。 TARGET_IP 表示 kafka 生产者的 IP。 通过上述结果的 PID,我检查了“tasklist /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();
    }
}

【问题讨论】:

  • 也许你应该从 kafka 控制台消费者开始?

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


【解决方案1】:

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

首先你应该检查你的kafka topic,确保里面有消息。

然后检查你的 spark 应用,确保它可以连接你的 kafka 代理。

【讨论】:

  • 首先感谢您的回答!您是否将本地机器用于 Kafka 生产者和消费者?就我而言,生产者和消费者拥有不同的 IP。我想,在 sparksession 中使用 master("local") 使得无法获得 kafka 源。此外,我可以使用“bin/kafka-console-consumer.sh --bootstrap-server TARGET_IP:9092 --topic test --from-beginning”获取Kafka源代码。
  • 我不认为master("local") 会影响 spark-kafka,它只是告诉应用程序如何运行。 (在本地运行或在 Spark 独立集群上运行)。
  • 检查你的网络和主题名称,我猜你的生产者没有连接到代理。
  • 你是对的。我的网络有问题。非常感谢!
猜你喜欢
  • 2017-04-25
  • 2020-01-18
  • 1970-01-01
  • 2021-12-05
  • 2021-06-03
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2018-09-06
相关资源
最近更新 更多