Как загружать, преобразовывать и загружать несколько файлов параллельно, используя Google Kubernetes Engine? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть большая коллекция данных, хранящихся в хранилище Google, со следующей структурой: gs://project_garden/plant_logs/2019/01/01/humidity/plant001/hour.gz.Я хочу создать задание Kubernetes, которое загружает все, анализирует и параллельно загружает проанализированные файлы в BigQuery.До сих пор мне удавалось сделать это локально без какого-либо параллелизма, написав код на языке Python, который принимает интервал даты в качестве входных данных и проходит по каждой из установок, выполняя gsutil -m cp -r для загрузки, gunzip для извлечения и панды для преобразования.Я хочу сделать то же самое, но параллельно для каждого растения, использующего Kubernetes.Можно ли распараллелить процесс, определив задание, которое передает разные идентификаторы завода для каждого модуля и загружает файлы для каждого из них?

1 Ответ

0 голосов
/ 14 июня 2019

Прямая загрузка из Kubernetes в BigQuery невозможна, вы можете загружать данные только в BigQuery [1] следующими способами:

  • Из облачного хранилища
  • Из других сервисов Google, таких как Менеджер объявлений Google и Google Ads
  • Из читаемого источника данных (например, вашего локального компьютера)
  • Вставляя отдельные записи, используя потоковые вставки
  • Использование операторов DML для выполнения массовых вставок
  • Использование преобразования ввода-вывода BigQuery в конвейере облачных потоков данных для записи данных в BigQuery

Как упоминалось в предыдущем комментарии, самым простым решением было бы загрузить данные с помощью DataFlow, вы можете найти шаблон для загрузки текста из Google Cloud Storage (GCS) в BigQuery по ссылке [2]

Если вам нужно использовать Google Cloud Engine (GKE), вам необходимо выполнить следующие шаги:

  1. Считать данные из GCS с помощью GKE. Пример того, как смонтировать ведро в ваших контейнерах, вы можете найти в следующей ссылке [3]
  2. Разбор данных с вашим кодом, как указано в вашем вопросе
  3. Загрузка данных из GCS в BigQuery, более подробная информация в ссылке [4]

[1] https://cloud.google.com/bigquery/docs/loading-data

[2] https://cloud.google.com/dataflow/docs/guides/templates/provided-streaming#gcstexttobigquerystream

[3] https://github.com/maciekrb/gcs-fuse-sample

[4] https://cloud.google.com/bigquery/docs/loading-data-cloud-storage

...