【问题标题】:pySpark jdbc write error: An error occurred while calling o43.jdbc. : scala.MatchError: nullpySpark jdbc 写入错误:调用 o43.jdbc 时出错。 :scala.MatchError:空
【发布时间】:2018-08-29 17:21:06
【问题描述】:

我正在尝试使用 pySpark 将简单的 spark 数据帧写入 db2 数据库。数据框只有一列,其数据类型为 double。

这是只有一行一列的数据框:

这是数据框架构:

当我尝试使用以下语法将此数据帧写入 db2 表时:

dataframe.write.mode('overwrite').jdbc(url=url, table=source, properties=prop)

它第一次在数据库中创建表没有任何问题,但是如果我第二次运行代码,它会引发异常:

在 DB2 端,列数据类型也是 DOUBLE

不知道我错过了什么。

【问题讨论】:

  • @pault :但实际上模式 ='overwrite' 的预期行为是,如果数据/表已经存在,则现有数据预计将被 DataFrame 的内容覆盖。在这种情况下,PySpark 数据帧模式和 db2 表模式是匹配的,因此理想情况下覆盖不应该出现问题。在这种情况下,mode = 'append' 也不起作用。

标签: pyspark db2 spark-dataframe spark-jdbc


【解决方案1】:

我只是更改了代码中的一小部分,它运行良好。 这是我对语法所做的小改动

dataframe.write.jdbc(url=url, table=source, mode = 'overwrite', properties=prop)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多