我正在从 parquet 中读取行,因为我正在使用类似于 this one 的源函数,但是当我尝试计算正在处理的行数时,尽管作业已完成,但没有打印任何内容:
val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment
env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime)
lazy val stream: DataStream[Group] = env.addSource(new ParquetSourceFunction)
stream.map(_ => 1)
.timeWindowAll(Time.seconds(180))
.reduce( _ + _).print()
答案 0 :(得分:0)
问题在于您使用的是 ProcessingTime
,因此基本上每当您使用 EventTime
文件完成时,Flink 都会发出带有 Long.Max
值的水印,以便所有窗口已关闭,但是在使用 ProcessingTime
时不会发生这种情况,所以简单地说 Flink 不会等待您的窗口关闭,这就是为什么您没有得到任何有价值的结果。
您可能想尝试切换到 DataSet
API,这应该更适合您要完成的任务。
或者,您可以尝试使用 EventTime
并分配静态水印,因为最后的 Flink 仍然会发出带有 Long.Max
值的水印。