Spark流中的按窗口分组功能

时间:2019-07-16 03:46:27

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

在Spark结构化流中,我正在使用withwatermark和window函数。为此,我使用了基于事件时间的处理。但是水印时间尚未初始化

对于基于事件的水印处理,我在传入的数据集中添加了新的时间戳值。然后,我在withwatermark和window函数中使用了同一列。

protected function redirectTo()
{
   $path = request()->redirect_to;
   or 
   $path = \Request::get('redirect_to');
    return back();
}
  • 在传入的数据流中,我基于特定列进行分组。在一定的窗口周期内,最后将输出写入文件中。但是问题是在配置的窗口时段之后,它应该刷新数据。但这不是刷新,而是水印时间是它提供的默认时间。  流作业从批处理0开始,它开始处理文件,并且我得到以下json

MicroBatchExecution:流式查询取得了进展:

Dataset<Row> dataset = createSparkSession().readStream()
                  .schema(SalesSchema).parquet("****"); 

Dataset<Row> dataset2  = dataset.withColumn("current_timestamp", functions.current_timestamp());

Dataset<Row> grpDs = dataset2.withColumn("GROUPEDCOL",struct(schemaCols[0], Arrays.copyOfRange(schemaCols, 1, schemaCols.length)))
                      .withWatermark("current_timestamp", "1 minutes")
                      .groupBy(functions.window(col("current_timestamp"),"1 minutes"),col("UNIQUE_ID"))
                      .agg(collect_list("GROUPEDCOL").as("GROUPEDCOLS"));

在上面的json水印中,默认值仍然是默认值,并且每4批刷新一次记录

0 个答案:

没有答案