在Spark结构化流中,我正在使用withwatermark和window函数。为此,我使用了基于事件时间的处理。但是水印时间尚未初始化
对于基于事件的水印处理,我在传入的数据集中添加了新的时间戳值。然后,我在withwatermark和window函数中使用了同一列。
protected function redirectTo()
{
$path = request()->redirect_to;
or
$path = \Request::get('redirect_to');
return back();
}
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批刷新一次记录