Cloud Dataflow - записи удаляются во время потоковой передачи задания, но не как пакетное задание - PullRequest
0 голосов
/ 14 июля 2020

У меня есть конвейер потока данных, который берет много файлов из корзины gcs, извлекает записи и применяет некоторые преобразования и, наконец, выводит их в паркетные файлы. Он постоянно наблюдает за файлами в корзине, что делает этот конвейер потоковой передачи, хотя на данный момент у нас есть условие завершения, чтобы остановить конвейер по прошествии 1 минуты с момента последнего нового файла. Мы тестируем с фиксированным набором файлов в корзине

Сначала я запускал этот конвейер в пакетном режиме (без непрерывного просмотра файлов), и после запроса файлов parquet в bigquery было около 36 миллионов записей. Однако, когда я включил непрерывный просмотр файлов и повторно запустил конвейер, паркетные файлы содержали только ~ 760 тыс. Записей. Я дважды проверил, что в обоих прогонах входная корзина имеет одинаковый набор файлов.

Показатели на странице сведений о потоковом задании вообще не совпадают с тем, что было выведено. Переходя к разделу Добавленные элементы (приблизительно) , говорится, что ~ 21 миллион записей (что неверно) было добавлено во входную коллекцию для последнего шага записи паркета, хотя файлы содержали ~ 760 тыс. Записей.

На том же шаге пакетного задания было правильное число (36 миллионов) для Добавленных элементов (Приблизительно) , и это было такое же количество записей в полученных файлах паркета.

Я не знаю В журналах ничего необычного не обнаружено.

Почему поток данных в облаке помечает задание потоковой передачи как успешное, даже если при записи вывода было отброшено множество записей?

Почему возникает несоответствие с отчетом метрик для пакетных и потоковых заданий в потоке данных в облаке с одним и тем же входом?

Для обоих заданий я установил 3 рабочих с типом машины n1-highmem-4. Я почти достиг своей квоты на проект.

1 Ответ

0 голосов
/ 14 июля 2020

Я подозреваю, что это может быть связано с тем, как вы настроили Windows и триггеры для потокового конвейера. По умолчанию Beam / Dataflow запускает данные, когда водяной знак проходит конец окна, а конфигурация окна по умолчанию устанавливает допустимую задержку равной нулю. Таким образом, любые запаздывающие данные будут отброшены конвейером. Чтобы изменить это поведение, вы можете попробовать установить допустимое значение задержки или попробовать установить другой триггер. См. здесь для получения дополнительной информации.

...