火花流作业正在读取繁忙的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();
答案 0 :(得分:3)
您似乎需要
stream = stream.selectExpr("topic").agg(count("topic")).as("count");
然后您可以打印