【问题标题】:Spark write DataFrame out jdbc errorSpark将DataFrame写入jdbc错误
【发布时间】:2016-11-30 08:19:35
【问题描述】:

我想像这样将预测结果DataFrame写回oracle数据库: model.transform(testDate).write.mode(SaveMode.Overwrite).j​​dbc(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


【解决方案1】:

我遇到了同样的问题,这与您尝试将元素字段保存在单词字段数组中的方式有​​关。一种解决方案是将该数组保存为字符串。

就我而言,我有:

 |-- jurisdiction_names: array (nullable = true)
 |    |-- element: string (containsNull = true)

我正在使用 pyspark 做的是

newDataFrame = completeDataFrame.select("jurisdiction_names")

我得到了

+--------------------+
|  jurisdiction_names|
+--------------------+
|             [Paris]|
|         [Amsterdam]|
|      [Santa Monica]|
|[DISTRICT OF COLU...|
|             [Paris]|
|[Illinois State, ...|
+--------------------+

使用新的数据框,您可以轻松地操作信息。

【讨论】:

  • @Nathan Tuggy 你能检查一下并提供解决方案吗-stackoverflow.com/questions/56151363/…
  • @CodeRunner:不要 ping 寻求特定问题帮助的人。如果他们可以提供帮助,他们可能无论如何都会看到它,并且不会欣赏被窃听。 (Ping 一个随机的 editor 更糟糕:我对 Spark 一无所知,所以即使我愿意也无法为您提供任何帮助。)
猜你喜欢
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2019-02-07
  • 1970-01-01
相关资源
最近更新 更多