Ucanaccess转换中的数据类型不兼容:从SQL类型CHARACTER到java.lang.Double

我的代码如下:

val optionmap = Map(
  "driver" -> "net.ucanaccess.jdbc.UcanaccessDriver","url" -> s"jdbc:ucanaccess://$mdbPath;memory=false;showSchema=true","dbtable" -> tableName,"user" -> "","password" -> "")
val result = Try{ spark.read.format("jdbc").options(optionmap).load }

库版本为:

val sparkVersion = "2.2.0"
"net.sf.ucanaccess" % "ucanaccess" % "4.0.4"

我看到的错误是:

Caused by: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::0.1-snAPSHOT incompatible data type in conversion: from SQL type CHARactER to java.lang.Double,value: codc17b
        at net.ucanaccess.jdbc.UcanaccessResultSet.getDouble(UcanaccessResultSet.java:447)
        at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$4.apply(JdbcUtils.scala:386)
        at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$makeGetter$4.apply(JdbcUtils.scala:385)
        at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anon$1.getNext(JdbcUtils.scala:330)
        at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anon$1.getNext(JdbcUtils.scala:312)
        at org.apache.spark.util.NextIterator.hasnext(NextIterator.scala:73)
        at org.apache.spark.InterruptibleIterator.hasnext(InterruptibleIterator.scala:37)
        at org.apache.spark.util.CompletionIterator.hasnext(CompletionIterator.scala:32)
        at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.processnext(Unknown Source)
        at org.apache.spark.sql.execution.BufferedRowIterator.hasnext(BufferedRowIterator.java:43)
        at org.apache.spark.sql.execution.WholeStagecodegenExec$$anonfun$8$$anon$1.hasnext(WholeStagecodegenExec.scala:395)
        at org.apache.spark.sql.execution.datasources.FileFormatWriter$SingleDirectoryWritetask.execute(FileFormatWriter.scala:315)
        at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executetask$3.apply(FileFormatWriter.scala:258)
        at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executetask$3.apply(FileFormatWriter.scala:256)
        at org.apache.spark.util.Utils$.tryWithSafeFinallyAndFailureCallbacks(Utils.scala:1375)
        at org.apache.spark.sql.execution.datasources.FileFormatWriter$.org$apache$spark$sql$execution$datasources$FileFormatWriter$$executetask(FileFormatWriter.scala:261)
        ... 8 more
Caused by: java.sql.SQLSyntaxErrorException: incompatible data type in conversion: from SQL type CHARactER to java.lang.Double,value: codc17b
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCUtil.throwError(Unknown Source)
        at org.hsqldb.jdbc.JDBCResultSet.getcolumnInType(Unknown Source)
        at org.hsqldb.jdbc.JDBCResultSet.getDouble(Unknown Source)
        at net.ucanaccess.jdbc.UcanaccessResultSet.getDouble(UcanaccessResultSet.java:445)
        ... 23 more
Caused by: org.hsqldb.HsqlException: incompatible data type in conversion: from SQL type CHARactER to java.lang.Double,value: codc17b
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.error.Error.error(Unknown Source)
        ... 26 more

我该怎么做才能解决它?还是可以解决?

squirrel917878 回答:Ucanaccess转换中的数据类型不兼容:从SQL类型CHARACTER到java.lang.Double

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3157624.html

大家都在问