Spark流式传输:在时间戳不正确时汇总数据

时间:2018-10-04 18:58:32

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

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();

0 个答案:

没有答案