В документации по Databricks упоминается, что мы должны предоставлять значения 'partitionColumn, lowerBound, upperBound и numPartitions' при чтении данных из реляционной базы данных несколькими работниками. Также упоминается, что partitionColumn должен быть целочисленным столбцом. Как я могу затем выполнить параллельное чтение из таблицы, в которой нет целочисленного столбца?
Документация по базе данных
Я попытался использовать 'rownum' (источник - Oracle DB) в качестве столбца раздела, но когда я пытаюсь сохранить результаты в кадре данных, я получаю только данные из первого раздела.
Вот код:
jdbcUrl = "jdbc:oracle:thin:@//{0}:{1}/{2}".format(hostname, port, db)
connectionProperties = {
"user" : 'XXXXXX',
"password" : 'XXXXXX',
"driver" : "oracle.jdbc.driver.OracleDriver",
"oracle.jdbc.timezoneAsRegion" : "false"
}
parallel_df = spark.read.jdbc(url=jdbcUrl,
table=table_name,
column='rownum',
lowerBound=1,
upperBound=200000,
numPartitions=20,
properties=connectionProperties)
Когда я получаю количество параллельных файлов, я получаю только 200000/20 = 10000 строк. Кто-нибудь может рассказать о том, как выполнить параллельное чтение?