#google-cloud-platform #google-bigquery #google-cloud-storage #google-cloud-dataflow #google-cloud-dlp
#google-cloud-platform #google-bigquery #google-облачное хранилище #google-cloud-dataflow #google-cloud-dlp
Вопрос:
Недавно я запустил задание Dataflow для загрузки данных из GCS и запуска их через шаблон идентификации DLP и записи замаскированных данных в BigQuery. Я не смог найти шаблон, предоставленный Google, для пакетной обработки, поэтому использовал потоковый (ссылка).)……….. (ссылка). Я вижу, что только 50% строк записаны в целевую таблицу BigQuery. В течение дня в конвейере нет активности, даже если он находится в запущенном состоянии.
Комментарии:
1. Не могли бы вы, пожалуйста, поделиться версией Dataflow? Спасибо!
2. Я использовал пользовательский интерфейс Dataflow и выбрал шаблон, предоставленный Google. Ниже приведены сведения из информации о задании: goog-dataflow-provided-template-name : stream_dlp_gcs_text_to_bigquery; goog-dataflow-provided-template-version : 2020-08-10-01_rc00; Пользовательский агент : Apache_Beam_SDK_for_Java/2.20.0( Jdk_11_окружение)
Ответ №1:
да, шаблон DLP Dataflow — это потоковый конвейер, но с некоторыми простыми изменениями вы также можете использовать его в пакетном режиме. Вот исходный код шаблона. Как вы можете видеть, он использует преобразование ввода-вывода файлов и опрашивает / просматривает любой новый файл каждые 30 секунд. если вы уберете синтаксис window transform и continuous polling, вы сможете выполнять пакетное выполнение.
Что касается конвейерной обработки не всех данных, можете ли вы подтвердить, используете ли вы большой файл с настройками по умолчанию? например, workerMachineType, numWorkers, maxNumWorkers? Текущий конвейерный код использует смещение на основе строк, для которого требуется тип машины highmem с большим количеством рабочих элементов, если входной файл большой. например, для 10 ГБ 80 МЛН строк вам может потребоваться 5 рабочих элементов highmem.
Единственное, что вы можете попробовать, чтобы проверить, помогает ли это, — запустить конвейер с большим количеством ресурсов, например: —workerMachineType =n1-highmem-8, numWorkers = 10, maxNumWorkers = 10 и посмотреть, стало ли это лучше.
В качестве альтернативы, существует решение версии V2, которое использует смещение на основе байтов с использованием API состояния и таймера для оптимизации пакетной обработки и использования ресурсов, которое вы можете опробовать.