考虑以下预期 sql:
select row_number()
over (partition by Origin order by OnTimeDepPct desc) OnTimeDepRank,*
from flights
这将不能在结构化流中起作用-如以下问题Spark - Non-time-based windows are not supported on streaming DataFrames/Datasets;中我对这个问题的回答所示:https://stackoverflow.com/a/55777253/1056563 < / p>
罪魁祸首是:
partition by Origin
要求是使用时间戳类型的字段,例如
partition by flightTime
此要求来自明确的来源(火花流的核心提交者)-指定支持基于 timestamp 的聚合。在这种情况下,语法使用window
:
window("timestamp", "10 minutes")`
实际上还有一个复杂的问题: 结构化流不支持相关子查询 。因此,无法使用尊敬的 Gordon Linoff 此处的普遍有用的答案:https://stackoverflow.com/a/46856508/1056563
那我上面的查询是什么-哪些必须基于 Origin 字段?与该查询最接近的等效项是什么?还是要获得相同结果的一种解决方法或不同方法?