Spark Streaming Job正在从Kafka主题中读取事件数据,基于时间戳进行汇总并产生计数。
现在的问题是传入的时间戳不正确。他们可能与当前时间戳有+/- 5days
差异。
这违背了watermarking
的目的。还有其他方法可以根据某个时间间隔对数据进行排序和汇总吗?
//Read
Dataset<Row> stream = sparkSession.readStream()
.format("kafka")
.option("kafka.bootstrap.servers", "kafkaBootstrapServersString")
.option("subscribe", topic)
.option("startingOffsets", "latest")
.option("enable.auto.commit", false)
.load();
//Aggregate
stream
.select(
col("timestamp"),
col("platform")
)
.groupBy(
functions.window(col("timestamp"), "30 minutes"),
col("platform")
)
.agg(
count(lit(1)).as("count")
);
//Write
stream
.writeStream()
.outputMode(OutputMode.Complete())
.format("console")
.trigger(Trigger.ProcessingTime("30 minutes"))
.start();