Apache flink Flink DataStream-在窗口上执行SQL查询,执行orderBy
因此,我正在使用Flink DataStream模拟一个流任务,并希望在每个窗口上执行一个SQL查询 假设这就是问题所在Apache flink Flink DataStream-在窗口上执行SQL查询,执行orderBy,apache-flink,flink-streaming,Apache Flink,Flink Streaming,因此,我正在使用Flink DataStream模拟一个流任务,并希望在每个窗口上执行一个SQL查询 假设这就是问题所在 SELECT name, age, sum(days), avg(salary) FROM employees WHERE age > 25 GROUP BY name, age ORDER BY name, age 我很难把它翻译成弗林克。据我所知,要计算平均值,我需要使用.apply()和WindowFunction手动计算。那我怎么计算总数呢?是否也在同一窗口功
SELECT name, age, sum(days), avg(salary)
FROM employees
WHERE age > 25
GROUP BY name, age
ORDER BY name, age
我很难把它翻译成弗林克。据我所知,要计算平均值,我需要使用.apply()
和WindowFunction
手动计算。那我怎么计算总数呢?是否也在同一窗口功能中手动执行?我还想知道是否可以在整个窗口上按顺序进行订购 下面是到目前为止我所想到的伪代码。任何帮助都将不胜感激!谢谢
employeesStream
.filter(new FilterFunction() ....) \\ where clause
.keyby(nameIndex, ageIndex) \\ group by??
.timeWindow(Time.seconds(10), Time.seconds(1))
.apply(new WindowFunction() ....) \\ calculate average (and sum?)
// order by??
我检查了,但流媒体似乎不支持很多操作,例如orderBy。流媒体中的排序并不简单。你想如何对永无止境的事物进行分类?在您的示例中,您希望计算平均值或总和,即每个窗口只有一个值。不能对一个值进行排序 另一种可能是缓冲所有值并等待完整性指标开始排序。多亏了事件时间和水印,如果您知道在某个时间之前已看到所有值(也称为水印),则可以对流进行排序 最近引入了事件时间排序,它将成为Flink 1.4表API的一部分。有关示例,请参见