【发布时间】:2018-10-15 09:46:59
【问题描述】:
我正在尝试从 MS Access 数据库加载表。
我是这样做的:
val table = sparkSession.read
.format("jdbc")
.option("url", "jdbc:ucanaccess://D:/User/test.mdf;memory=false")
.option("dbtable", "my_table")
.load()
.toDF
我添加了这些依赖项
- ucanaccess-4.0.1,
- hsqldb-2.4.1,
- jackcess-2.1.6,
- commons-lang3-3.8.1
- commons-logging-1.2.
我得到了这个例外:
Caused by: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.1 incompatible data type in conversion: from SQL type CHARACTER to java.lang.Integer, value: Maj_ID
at net.ucanaccess.jdbc.UcanaccessResultSet.getInt(UcanaccessResultSet.java:447)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$6.apply(JdbcUtils.scala:411)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$6.apply(JdbcUtils.scala:410)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anon$1.getNext(JdbcUtils.scala:347)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anon$1.getNext(JdbcUtils.scala:329)
at org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:73)
【问题讨论】:
-
您不使用 ucanaccess-4.0.4 有什么原因吗?查看更改日志,至少有一个与 CHAR 相关的问题自 4.0.1 以来已修复 - 我并不是说这是您的修复,但检查是否是这种情况应该很简单。
-
我同意@SimonGroenewolt - 下载the latest version of UCanAccess,运行
console.bat或console.sh,加载数据库文件,看看UCanAccess 是否报告任何错误。如果没有,请尝试SELECT * FROM my_table;看看是否有效。
标签: scala apache-spark ms-access jdbc ucanaccess