小编Tol*_*sun的帖子

使用Apache Spark 1.4.0写入Oracle数据库

我正在尝试使用Spark 1.4.0 DataFrame.write.jdbc()函数将一些数据写入我们的Oracle数据库.

用于从Oracle数据库读取数据到DataFrame对象的对称read.jdbc()函数运行良好.然而,当我写回数据帧时(我也尝试将从数据库设置CverWrite获得的完全相同的对象写入true)给出以下异常:

Exception in thread "main" java.sql.SQLSyntaxErrorException: ORA-00902: Ungültiger Datentyp

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1017)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:566)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:58)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:943)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1075)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3820)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3897)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1361)
    at org.apache.spark.sql.DataFrameWriter.jdbc(DataFrameWriter.scala:252)
    at main3$.main(main3.scala:72)
    at main3.main(main3.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Run Code Online (Sandbox Code Playgroud)

该表有2个基本字符串列.当它们是Integer时,它也可以编写它.

实际上,当我更深入时,我意识到它将StringType映射到Oracle无法识别的"TEXT"(应该是"VARCHAR").代码来自jdbc.scala,可以在GitHub找到:

def schemaString(df: DataFrame, url: String): String = {
      val sb = new StringBuilder()
      val …
Run Code Online (Sandbox Code Playgroud)

oracle scala jdbc apache-spark

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

apache-spark ×1

jdbc ×1

oracle ×1

scala ×1