Самый эффективный способ создать таблицу из 15 тысяч файлов (от хранилища до BQ) - PullRequest
0 голосов
/ 15 декабря 2018

Я пытался использовать Google BQ Api и Google Storage API (я храню там все файлы), просто перебирая все файлы и добавляя новые строки в таблицу во время каждой итерации, но я достиг предела квоты для добавления в таблицу.

Что было бы наиболее эффективным способом?Я думал о создании отдельной таблицы для каждого файла и затем объединял их в BQ и сохранял как новую таблицу, но я думал, что может быть ограничение на количество подстановочных знаков в запросе.Любые рекомендации?

1 Ответ

0 голосов
/ 15 декабря 2018

Я бы предложил в двух словах использовать механизм загрузки файлов BQ из GCS .Это должен быть несжатый файл формата CSV, JSON, Avro или другой вспомогательный файл размером до 5 ТБ.Вы можете загрузить в загружаемом задании до 15 ТБ, что означает максимум три терафайла.

Облачное хранилище Google поддерживает изящную функцию под названием «составить»: она позволяет составлять большие двоичные объекты из 32 исходных больших двоичных объектов.,Вы можете сделать это из командной строки, выполнив:

gsutil compose \
  gs://${BUCKET}/somedir/csv/train* \
  gs://${BUCKET}/somedir/csv/full_training_data.csv

. Обратите внимание, что сейчас можно использовать только 32 файла, поэтому вам нужно делать это итерацией, если вы хотите создать более крупные, но меньшие файлы из этих 15k..

Имейте в виду, что для каждой таблицы существует ограничение в 1000 ежедневных заданий на загрузку, вы можете создать несколько таблиц и объединить их.Кроме того, ограничение нагрузки 50k на проект.

Каждая операция задания (запрос или загрузка) может затрагивать не более 2000 разделов.Вы можете ограничить до 5000 модификаций разделов в день для разделенной таблицы.Больше ограничений здесь .

...