Не сжимайте данные перед загрузкой в Bigquery.Еще один предмет, 5 МБ, мал для Bigquery.Я хотел бы взглянуть на стратегии консолидации и, возможно, изменить формат файла при обработке каждого файла Json.
Вы можете использовать Dataprep, Dataflow или даже Dataproc.В зависимости от того, сколько файлов, это может быть лучшим выбором.Для чего-то большего, чем, скажем, 100 000 файлов размером 5 МБ потребуется одна из этих больших систем с большим количеством узлов.
Облачные функции могут занять слишком много времени для чего-то большего, чем несколько тысяч файлов.
Другой вариант состоит в том, чтобынаписать простую программу на Python, которая предварительно обрабатывает ваши файлы в облачном хранилище и напрямую загружает их в BigQuery.Мы говорим только о 20 или 30 строках кода, если вы не добавите консолидацию.5 МБ файл будет загружаться, обрабатываться и записываться примерно за 500 мс.Я не уверен насчет времени загрузки Bigquery.Для 50000 файлов размером 5 МБ от 12 до 24 часов для одного потока в большом экземпляре Compute Engine (вам нужна высокая пропускная способность сети).
Другой вариант - это запустить несколько вычислительных машин.Один движок помещает имена файлов N (примерно 4 или 16) для каждого сообщения в Pub / Sub.Затем несколько экземпляров Compute подписываются на одну и ту же тему и параллельно обрабатывают файлы.Опять же, это всего лишь еще 100 строк кода.
Если ваш проект состоит из многих миллионов файлов, пропускная способность сети и время вычислений будут проблемой, если время не является фактором.