Использовала DLP потока данных для чтения из GCS и записи в BigQuery — в BigQuery записано только 50% данных

#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 состояния и таймера для оптимизации пакетной обработки и использования ресурсов, которое вы можете опробовать.