【发布时间】:2016-11-30 08:19:35
【问题描述】:
我想像这样将预测结果DataFrame写回oracle数据库: model.transform(testDate).write.mode(SaveMode.Overwrite).jdbc(url,"b_spark_tst",prop)
但我收到此错误消息:
Exception in thread "main" java.lang.IllegalArgumentException: Can't get JDBC type for array<string>
谁能帮助我如何将 DataFrames 写入数据库?
谢谢!
更新:
这就是我的 DataFrame 架构的样子:
root
|-- CATEG: string (nullable = true)
|-- COMM: string (nullable = true)
|-- label: double (nullable = true)
|-- words: array (nullable = true)
| |-- element: string (containsNull = true)
|-- features: vector (nullable = true)
|-- rawPrediction: vector (nullable = true)
|-- probability: vector (nullable = true)
|-- prediction: double (nullable = true)
【问题讨论】:
-
如何定义您想要覆盖的表?数据框的模式结构如何?
-
更新了架构结构。我认为单词专栏将是问题所在。我还没有在数据库中创建我的表.. 我应该吗? :)
-
如果我修改我的代码:model.transform(testDate).select("CATEG" , "COMM" , "label" , "fatures" , "rawPrediction" , "probability" , "prediction" ).write.mode(SaveMode.Append).jdbc(url,"b_spark_tst",prop) 我没有看到标签异常.. :(
-
只尝试一列,创建并附加到现有表,在此处提供结果作为注释。
-
引起:java.sql.BatchUpdateException: ORA-12899: value too large for column "KALLER_USR"."B_SPARK_TST"."COMM" (实际:291,最大值:255 怎么会发生? ? 我已经创建了带有 varchar(4000) 列的表
标签: scala jdbc apache-spark