Чтение больших объемов данных из BigQuery с помощью объединений - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть сценарий использования, в котором я должен читать выбранные данные из BigQuery, применяя левые объединения к 20 различным таблицам BQ, применять преобразования к этим данным и, наконец, выводить данные в окончательную таблицу BQ.

Я имел в виду два подхода для достижения этой цели, которые я попробовал на выборочных данных (всего 10-12 миллионов строк из 20 таблиц) и получил следующие результаты:

Подход 1 - написать BQ-совместимый запрос для всего процесса и запустить его через Apache Beam (используя BigQueryIO.readTableRows ()) и, наконец, сбросить данные в целевую таблицу BigQuery.

  • Выполните задание, используя тип машины n1-standard-4, и задание завершится через 6:24 мин.

Подход 2 - Напишите весь процесс в Apache Beam и избегайте использования большого количества слотов в BQ.

  • Выполните задание, используя тип машины n1-standard-4, и задание завершится в 14:50 минут.

Здесь важно учитывать, что 20 исходных таблиц, к которым нужно присоединиться, будут расти с течением времени, и, возможно, в ближайшем будущем у нас будут ТБ данных.

Какой будет более эффективный способ сделать это, учитывая увеличение объема данных, которое у нас будет в будущем?

1 Ответ

0 голосов
/ 07 сентября 2018

Есть два шага. Вы пытались создать представление для первого (обработка 20 таблиц), а затем простой запрос (даже из пользовательского интерфейса), чтобы выполнить второй шаг и сохранить его в финальной таблице?

...