Как использовать ucanaccess (ms access jdbc driver) в лазурных блоках данных? - PullRequest
0 голосов
/ 03 мая 2019

Я использую лазурные блоки данных и пытаюсь прочитать файлы .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 не очень распространены, поэтому я чувствую, что мои возможности здесь ограничены в том, что у меня есть для анализа данных.

...