2016-05-16 2 views
2

Я читал документацию по документу Dataflow SDK, пытаясь выяснить, что происходит, когда данные попадают в водяной знак в потоковой работе.Данные последнего потока данных Google

Эта страница:

https://cloud.google.com/dataflow/model/windowing

показывает, что при использовании стратегии окна по умолчанию/триггера, то поздние данные будут отброшены:

Примечание: оконная по умолчанию и запуск стратегия DataFlow отбросит поздние данные. Если вы хотите убедиться, что ваш конвейер обрабатывает экземпляры поздних данных, вам нужно явно установить параметр .withAllowedLateness, когда вы установите стратегию оконного копирования PCollection и установите триггеры для своих PCollections соответственно.

Однако эта страница:

https://cloud.google.com/dataflow/model/triggers

указывает на то, что поздние данные будут выделяться в виде единого элемента PCollection, когда он приходит поздно:

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

Таким образом, будут ли данные, оставшиеся после водяного знака, пропущены полностью? Или, не будет ли он испускаться только с другими данными, которые он был бы окончен, если бы он прибыл вовремя и был испущен сам по себе?

ответ

1

По умолчанию «стратегии окон и триггеров» отбрасывают поздние данные. WindowingStrategy - это объект, который состоит из окон, запуска и нескольких других параметров, таких как допустимая задержка. По умолчанию допустимая задержка равна 0, поэтому любые поздние элементы данных отбрасываются.

Триггер по умолчанию обрабатывает последние данные. Если вы принимаете значение по умолчанию WindowingStrategy и меняете только допустимую задержку, тогда вы получите PCollection, который содержит одну выходную область для всех данных времени включения, а затем новую панель вывода для примерно каждого позднего элемента.

+0

Благодарим за быстрый ответ @ben. Поэтому, если я правильно понимаю это со стратегией окон по умолчанию: * Данные, поступающие вовремя, будут испускаться в одной панели вывода. * Точки данных, прибывающие с опозданием, но в пределах разрешенной видимости, будут выбрасываться в собственной области вывода (приблизительно). * Точки данных, прибывающие позже разрешеннойLateness, будут отброшены. Какие существуют подходы к захвату данных, которые появляются позже, чем разрешенная? Одним из наших вариантов использования для потока данных является биллинговая система, в которой каждый запрос должен быть подсчитан в конце концов, независимо от того, как поздно он прибывает. – LeeW

+1

Все данные, которые поступают после того, как разрешенаLateness отбрасывается. Если вы хотите отреагировать на все поздние данные, вы должны соответственно установить значение allowLateness. В типичных случаях использования есть точка (день/неделя/месяц), после которой поздние данные больше не принимаются. Системе необходимо сохранить данные для каждого окна до тех пор, пока не будет достигнута допустимая ограниченность, чтобы больше не было данных для этого окна.Обычно есть значения допустимой задержки, после которой поздние данные настолько маловероятны, что их никогда не бывает, или если данные настолько запоздали, что это невозможно. –

Смежные вопросы