Как выполнить агрегации без меток времени в потоковой структурированной искре? - PullRequest
0 голосов
/ 20 апреля 2019

Рассмотрим следующее предназначено sql:

select row_number() 
  over (partition by Origin order by OnTimeDepPct desc) OnTimeDepRank,* 
  from flights

Это будет не работать в структурированной потоковой передаче - как показано в следующем вопросе Spark - не потоковые окна не поддерживаются при потоковой передаче данных. Фреймы данных / наборы данных; моим собственным ответом на этот вопрос: https://stackoverflow.com/a/55777253/1056563

Виновник:

 partition by Origin

Требуется использовать поле типа отметки времени, например

 partition by flightTime

Это требование исходит из определенного источника (основной коммиттер для потоковой передачи с искрой ), указывающий, что поддерживаются агрегации на основе timestamp . Синтаксис в этом случае использует window:

window("timestamp", "10 minutes")` 

На самом деле есть дополнительное осложнение: Структурированная потоковая передача не поддерживает коррелированные подзапросы . Поэтому обычно полезные ответы от уважаемого Гордона Линоффа здесь: https://stackoverflow.com/a/46856508/1056563 не могут быть применены

Что тогда для моего запроса выше - какой должен быть основан на поле Origin ? Что является наиболее близким эквивалентом этого запроса? Или какой может быть обходной путь или другой подход для достижения тех же результатов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...