Как Apache Beam, работающий в GCP Dataflow, обрабатывает пакеты больших SQL таблиц? - PullRequest
1 голос
/ 08 мая 2020

У меня есть таблица SQL, содержащая около 1 ТБ данных, я хочу передать эту таблицу через ETL в GCS. Чего я не понимаю, так это того, как Apache луч читает таблицу, это куски, если да, то каков размер куска и как я могу его настроить? Кроме того, в случае сбоя работа начинается с того места, где она закончилась?

1 Ответ

3 голосов
/ 10 мая 2020

Apache Beam предоставляет фабричный класс преобразования JdbcIO для чтения данных из доступных баз данных JDB C. JdbcIO использует обычные конструкции JDB C для установления sh подключения и чтения данных.

JdbcIO не предоставляет механизма для фрагментов, сегментов или разделения своей рабочей нагрузки. Преобразование JdbcIO.Read создается с помощью запроса SQL, и этот запрос выполняется за один шаг.

Если вам нужно разделить рабочую нагрузку для получения некоторого уровня распараллеливания, это нужно будет добавить в Apache Балочный трубопровод. Это может быть выполнено, если на начальном этапе вычисляются границы раздела, а затем эти границы передаются в качестве входных данных в запрос SQL преобразования JdbcIO.Read.

https://nl.devoteam.com/en/blog-post/querying-jdbc-database-parallel-google-dataflow-apache-beam/ является примером этого подхода к разделению.

...