Мое требование - выбрать миллионы строк в базе данных 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, чтобы объемные данные, извлекаемые из базы данных, обрабатывались параллельно?