如何在Spark结构化流媒体中执行基于非时间戳的聚合?

时间:2019-04-20 20:58:48

标签: scala apache-spark spark-structured-streaming

考虑以下预期 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 字段?与该查询最接近的等效项是什么?还是要获得相同结果的一种解决方法或不同方法?

0 个答案:

没有答案