Я использую лазурные блоки данных и пытаюсь прочитать файлы .mdb как часть программы ETL. После некоторых исследований единственный найденный мною коннектор jdbc для форматов ms access (.mdb) - это «ucanaccess». Я ознакомился с некоторыми учебными пособиями по Azure о том, как подключиться к источнику данных jdbc, и сначала это соединение кажется успешным, но есть некоторые странные действия, которые не имеют никакого смысла.
С одной стороны, я не могу на самом деле запросить фрейм данных, потому что есть разные ошибки типа данных. Это происходит для каждой таблицы в файле .mdb.
connectionProperties = {
"driver" : "net.ucanaccess.jdbc.UcanaccessDriver"
}
url = "jdbc:ucanaccess:///dbfs/mnt/pre-processed/aeaton@legacydirectional.com/DD/DAILIES/5-1-19/MD190062.MDB"
df = spark.read.jdbc(url=url, table="tblbhaitems", properties=connectionProperties)
Результатом здесь является возвращаемый фрейм данных
(возвращен фрейм данных)
Теперь, пытаясь получить данные из фрейма данных, я получаю следующую ошибку:
df.select("*").show()
ошибка: "org.apache.spark.SparkException: задание прервано из-за сбоя этапа: задание 0 на этапе 0.0 не выполнено 4 раза, последний сбой: потерянное задание 0.3 на этапе 0.0 (TID 3, 10.139.64.6, исполнитель 0 ): net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc ::: 4.0.4 несовместимый тип данных при преобразовании: из типа SQL CHARACTER в java.lang.Integer, значение: номер элемента "
Глядя на эту ошибку, я решаю попробовать запросить определенный строковый столбец, чтобы хотя бы проверить другие типы данных. Когда я выполняю
df.select("`Job no ID`").show()
Я получаю имя столбца, повторяемое для каждого значения строки в этой таблице:
+---------+
|Job no ID|
+---------+
|Job no ID|
|Job no ID|
|Job no ID|
|Job no ID|
|Job no ID|
+---------+
Я в полном недоумении, почему он подключается и видит столбцы, но фактически не получает никаких данных. К сожалению, файлы .mdb не очень распространены, поэтому я чувствую, что мои возможности здесь ограничены в том, что у меня есть для анализа данных.