Поток данных для обработки запоздалых и неупорядоченных данных для пакетных и потоковых сообщений? - PullRequest
0 голосов
/ 11 января 2019

Моя компания получает данные о событиях в пакетном и потоковом режиме. Я хочу обрабатывать данные с использованием потока данных Google Cloud в течение предсказуемого периода времени. Однако я понимаю, что в некоторых случаях данные поступают с опозданием или не в порядке. Как использовать Dataflow для обработки поздно или не в порядке?

Это вопрос домашнего задания, и хотелось бы узнать единственный ответ ниже.

а. Установить одно глобальное окно для захвата всех данных

б. Установить скользящее окно, чтобы захватить все запаздывающие данные

с. Используйте водяные знаки и временные метки для захвата данных с задержкой

д. Убедитесь, что у каждого типа источника данных (потока или пакета) есть временная метка, и используйте временные метки, чтобы определить логику для данных с задержкой.

Мои рассуждения - я верю, что «С» - это ответ. Но тогда водяной знак фактически отличается от поздних данных. Пожалуйста подтвердите. Кроме того, поскольку в вопросе упоминались как пакетные, так и потоковые данные, я также думаю, что «D» может быть ответом, поскольку режим «пакетной» (или ограниченной коллекции) не имеет временных меток, если он не исходит из источника или не установлен программно. Поэтому я немного запутался в ответе.

Пожалуйста, помогите здесь. Я не являюсь носителем английского языка, поэтому не уверен, что мог пропустить некоторые реплики в вопросе.

1 Ответ

0 голосов
/ 14 января 2019
How to use Dataflow to handle late or out of order

Это большой вопрос. Я постараюсь дать несколько простых объяснений, но предоставлю некоторые ресурсы, которые могут помочь вам понять.

Ограниченный сбор данных

Вы почувствовали это: ограниченные данные не имеют проблемы с запозданием. По характеру ограниченных данных вы можете сразу прочитать весь набор данных перед запуском конвейера.

Неограниченный сбор данных

Ваш C правильный, а водяной знак отличается от поздних данных. Водяной знак в реализации является монотонно увеличивающейся отметкой времени. Когда Beam / Dataflow видит запись с отметкой времени события, которая предшествует водяному знаку, запись обрабатывается как поздние данные (это только концептуально, и вы можете захотеть проверить [1] для более подробного обсуждения).

Вот ссылки [2], [3], [4] для этой темы:

  1. https://docs.google.com/document/d/12r7frmxNickxB5tbpuEh_n35_IJeVZn1peOrBrhhP6Y/edit#heading=h.7a03n7d5mf6g

  2. https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102

  3. https://www.oreilly.com/library/view/streaming-systems/9781491983867/

  4. https://docs.google.com/presentation/d/1ln5KndBTiskEOGa1QmYSCq16YWO9Dtmj7ZwzjU7SsW4/edit#slide=id.g19b6635698_3_4

...