apache-spark - 使用 Dataframes 从 Informix 到 Spark 的 JDBC

标签 apache-spark apache-spark-sql spark-dataframe informix

我可以使用简单的 JDBC 连接程序连接到 Informix 数据库,但是当我尝试使用 Spark Dataframes 加载表时,我遇到了异常。我们是否需要为 Informix Spark 连接使用特定的连接器?

下面是异常的堆栈跟踪:

java.sql.SQLException: System or internal error java.lang.NumberFormatException: For input string: "table_name"
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:482)
at com.informix.jdbc.IfxChar.toLong(IfxChar.java:666)
at com.informix.jdbc.IfxResultSet.getLong(IfxResultSet.java:1123)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$$anon$1.getNext(JDBCRDD.scala:411)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$$anon$1.hasNext(JDBCRDD.scala:472)
at org.apache.spark.sql.execution.datasources.DefaultWriterContainer.writeRows(WriterContainer.scala:241)
at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation$$anonfun$run$1$$anonfun$apply$mcV$sp$3.apply(InsertIntoHadoopFsRelation.scala:150)
at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation$$anonfun$run$1$$anonfun$apply$mcV$sp$3.apply(InsertIntoHadoopFsRelation.scala:150)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:66)
at org.apache.spark.scheduler.Task.run(Task.scala:88)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:214)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

最佳答案

当 Spark 生成数据库查询时,它会将列名放在引号中。为此,您需要在 JDBC 连接 URL 中添加

DELIMIDENT=Y

关于apache-spark - 使用 Dataframes 从 Informix 到 Spark 的 JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35000345/

相关文章:

scala - 在 Spark Scala 中将时间戳转换为 UTC

apache-spark - Spark Parquet 分区 : Large number of files

scala - 负逻辑实现不适用于spark/scala

apache-spark - Spark Dataframes 已成功创建但无法写入本地磁盘

scala - 为什么在reduce中使用sqrt结果不一致?

scala - 如何访问InputDStream数据?

hive - str_to_map 返回map<字符串,字符串>。如何让它返回map<string,int>?

apache-spark-sql - 如何使用 scala API 在 spark sql 中写入大于 1 的特定列的计数

eclipse - Gradle:在Eclipse中使用Apache Spark设置Scala项目

python - 在 Pyspark 中评估分类器时,“SparkSession”对象没有属性 'serializer'