无法使用 Pyspark 中的更新将字符串插入增量表

Posted

技术标签:

【中文标题】无法使用 Pyspark 中的更新将字符串插入增量表【英文标题】:Can't insert string to Delta Table using Update in 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" 

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于无法使用 Pyspark 中的更新将字符串插入增量表的主要内容,如果未能解决你的问题,请参考以下文章

通过pyspark更新hive中的插入数据

Kettle增量插入和更新

将增量文件写入 S3 (MinIO) - PySpark 2.4.3

增量文件版本的 Pyspark 结构化流错误

无法使用自动增量插入到 SQL Server CE

PySpark 条件增量