Метка времени контекста в DataStream, созданная операцией Window - PullRequest
0 голосов
/ 22 марта 2019

Допустим, у меня есть inputStream, и я выполняю над ним некоторые операции с окнами. Какова временная метка для события, созданного путем выполнения некоторой оконной операции над ним.

....
DataStream<Integer> inputStream = // ...
DataStream<Integer> countStream = inputStream.keyBy(0)
    .timeWindow(time.Seconds(1))
    .sum();
DataStream<Integer> maxStream = inputStream.keyBy(0)
    .timeWindow(time.Seconds(1))
    .max();

Теперь я хочу объединить потоки countStream и maxStream, чтобы найти все отметки времени, при которых countStream за последнюю секунду был равен maxStream.

Примечание: Это не совсем та проблема, которую я пытаюсь решить, но это типичный пример. Решение этого поможет мне решить реальную проблему, которую мне нужно решить.

Ответы [ 2 ]

0 голосов
/ 25 марта 2019
  • Для падающих окон, основанных на событиях, интервал которых составляет 1 секунду. Давайте посмотрим, есть ли окно диапазонов в [start_ts, end_ts) , и оно будет выдавать результаты с отметкой времени end_ts - 1 (то есть start_ts - 999 причина end_ts равна start_ts + 1000 здесь).
  • Для сеньоров, основанных на времени процесса, информация о метке времени отсутствует. генерироваться.

Обновление:

Если вы хотите, чтобы элементы из одного и того же верхнего окна оказались в одном и том же нижнем окне. Вы можете использовать Последовательная оконная операция .

Шаги:

  1. объедините ваш countStream с maxStream на union.
  2. Окно объединенных потоков с windowAll.
  3. выполняет свою бизнес-логику в некоторой process функции, следующей за windowAll.
0 голосов
/ 22 марта 2019

В случае, если временные окна являются временными окнами событий, события, которые они излучают, будут помечены как созданные в конце окна. В случае временных окон обработки события не будут иметь временных отметок, а часы времени ЦП будут использоваться в качестве источника информации о времени.

Обновление:

Временные окна во Флинке выровнены с эпохой - они не относятся к первому событию или чему-то в этом роде. Вам гарантировано, что два окна времени события, которые имеют одинаковую длительность и смещение, например два падающих окна длиной одна секунда, будут собирать события в течение точно того же интервала времени.

Поток событий, излучаемый временным окном события, сам по себе является потоком с временными метками времени события, и его можно дополнительно оконить, как и любой другой поток событий с метками времени. Просто помните, что все события, созданные одним экземпляром окна (т. Е. В течение одной и той же секунды), будут иметь одну и ту же метку времени. Таким образом, если вы следуете за 1-секундным окном с более коротким окном, например, 100 мсек, то в 9 раз из 10 более короткое окно не будет видеть никаких событий.

...