Чтение массовых данных из BigQuery с помощью объединений

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

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


person rish0097    schedule 06.09.2018    source источник


Ответы (1)


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

person FKrauss    schedule 07.09.2018
comment
Мне нужно выполнять эту работу каждые 15 минут. Решение звучит хорошо, но я надеюсь, что производительность будет стабильной даже при увеличении данных. - person rish0097; 07.09.2018
comment
Представления - это, по сути, запросы с псевдонимами. Итак, если вы сделаете это сегодня, представление технически сделает ваши запросы более читаемыми и удобными в обслуживании. - person FKrauss; 07.09.2018
comment
Я понимаю вашу точку зрения, но я спрашиваю о производительности. Что об этом? - person rish0097; 07.09.2018
comment
Как я уже сказал, представление работает с той же производительностью, что и обычный запрос. Это нигде не написано, но у меня есть неподтвержденные свидетельства того, что представления на самом деле работают лучше, поскольку они, вероятно, имеют какое-то кеширование. - person FKrauss; 08.09.2018
comment
Хорошо. Спасибо @fkrauss - person rish0097; 09.09.2018