Spark Streaming:写入从Kafka主题读取的行数

时间:2018-11-09 14:37:38

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

火花流作业正在读取繁忙的kafka主题中的事件。为了了解每个触发间隔将要传入多少数据,我只想输出从该主题读取的行数。我尝试了多种方法来完成此操作,但无法解决。

Dataset<Row> stream = sparkSession.readStream()
          .format("kafka")
          .option("kafka.bootstrap.servers", kafkaBootstrapServersString)
          .option("subscribe", topic)
          .option("startingOffsets", "latest")
          .option("enable.auto.commit", false)
//          .option("failOnDataLoss", false)
//          .option("maxOffsetsPerTrigger", 10000)
          .load();
      stream.selectExpr("topic").agg(count("topic")).as("count");
      //stream.selectExpr("topic").groupBy("topic").agg(count(col("topic")).as("count"));
      stream.writeStream()
            .format("console")
            .option("truncate", false)
            .trigger(Trigger.ProcessingTime("10 seconds"))
            .start();

1 个答案:

答案 0 :(得分:3)

您似乎需要

stream = stream.selectExpr("topic").agg(count("topic")).as("count");

然后您可以打印