【问题标题】:Can't insert string to Delta Table using Update in Pyspark无法使用 Pyspark 中的更新将字符串插入增量表
【发布时间】:2020-05-18 17:48:49
【问题描述】:

我遇到了一个问题,它不允许我使用更新和返回插入字符串。我正在运行 6.5(包括 Apache Spark 2.4.5、Scala 2.11),但它也不适用于 6.4 运行时。

我有一个包含以下列的增量表,按创建日期分区

ID string
 , addressLineOne string
 , addressLineTwo string
 , addressLineThree string
 , addressLineFour string
 , matchName string
 , createdDate

我正在运行一个访问 API 并更新 matchName 列的进程。

如果这样做,使用 Pyspark,只是为了测试写作

 deltaTable.update(col("ID") == "ABC123", {"matchName ": "example text"})

我收到以下错误:

Py4JJavaError: An error occurred while calling o1285.update.
: org.apache.spark.sql.catalyst.analysis.UnresolvedException: Invalid call to dataType on unresolved object, tree: 'example

如果我尝试这个,将字符串更改为 123,它会毫无问题地更新

deltaTable.update(col("ID") == "ABC123", {"matchName ": "123"})

但是,如果我使用 sql 并这样做

UPDATE myTable SET matchName = "Some text" WHERE ID = "ABC123" 

它插入很好。搜了一下,没看到类似的问题,有什么建议吗?我错过了什么明显的东西吗?

【问题讨论】:

    标签: pyspark databricks azure-databricks delta-lake


    【解决方案1】:

    看起来你的 python 代码中matchName 后面有一个额外的空格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多