Flink DataStream - 在窗口上执行SQL查询,执行orderBy

时间:2017-06-28 19:09:43

标签: 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

我很难把它翻译成Flink。根据我的理解,要计算平均值,我需要使用.apply()WindowFunction手动执行此操作。但是我如何计算总和呢?也可以手动在同一个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??

我检查了Table API,但似乎流式传输不支持很多操作,例如orderBy。

0 个答案:

没有答案