Недавно я запустил задание Dataflow, чтобы загрузить данные из GCS, пропустить их через шаблон идентификации DLP и записать замаскированные данные в BigQuery. Мне не удалось найти предоставленный Google шаблон для пакетной обработки, поэтому я использовал потоковый (ref: ссылка). Я вижу, что в целевую таблицу BigQuery записано только 50% строк. В конвейере нет активности в течение дня, даже если он находится в рабочем состоянии.
Используется DLP Dataflow для чтения из GCS и записи в BigQuery - только 50% данных записывается в BigQuery.
Ответы (1)
да Шаблон DLP Dataflow - это конвейер потоковой передачи, но с некоторыми простыми изменениями вы также можете использовать его в пакетном режиме. Вот шаблон исходный код. Как вы можете видеть, он использует Преобразование ввода-вывода файла и опрос / наблюдение за любым новым файлом каждые 30 секунд. если вы уберете оконное преобразование и синтаксис непрерывного опроса, вы сможете выполнить его как пакет.
Что касается конвейера, который не обрабатывает все данные, можете ли вы подтвердить, что вы запускаете большой файл с настройками по умолчанию? например workerMachineType, numWorkers, maxNumWorkers? Текущий код конвейера использует линейное смещение, что требует типа машины highmem с большим количеством рабочих, если входной файл большой. например, для 10 ГБ, 80M линий вам может понадобиться 5 работников highmem.
Одна вещь, которую вы можете попытаться увидеть, помогает ли это запустить конвейер с большим количеством ресурсов, например: --workerMachineType = n1-highmem-8, numWorkers = 10, maxNumWorkers = 10, и посмотреть, лучше ли это.
В качестве альтернативы существует решение V2, в котором используется смещение на основе байтов с использованием API состояния и таймера для оптимизации пакетной обработки и использования ресурсов, который вы можете попробовать.