JdbcIO.read () - разбиение запросов - PullRequest
0 голосов
/ 06 сентября 2018

Мое требование - выбрать миллионы строк в базе данных MYSQL с помощью API JdbcIO. Я использую JdbcIO версии 2.7.0.

Код образца:

pipeline.apply(JdbcIO.read()
        .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration
        .create(jdbcProperties.getProperty("driver"), 
                jdbcProperties.getProperty("url"))
        .withUsername(jdbcProperties.getProperty("username"))
        .withPassword(jdbcProperties.getProperty("password")))
        .withQuery(query.toString())

Производительность запроса низкая, так как соединение JDBC является своего рода однопоточной операцией на уровне рабочего узла.

Я проверил исходный код метода readAll (), и они также не поддерживают параллельные операции чтения / записи.

В отличие от этого, Spark имеет следующие свойства для распараллеливания операций чтения / записи JDBC: numPartitions, partitionColumn, lowerBound, upperBound .

Есть ли у нас аналогичная опция в API JdbcIO для разделения запроса и распараллеливания операций чтения / записи JDBC, чтобы объемные данные, извлекаемые из базы данных, обрабатывались параллельно?

...