无法在Pyspark中使用更新插入字符串到Delta表。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Pyspark中使用更新插入字符串到Delta表。相关的知识,希望对你有一定的参考价值。

我遇到了一个问题,它不允许我使用 update 和 returns 插入一个字符串。我正在运行6.5(包括Apache Spark 2.4.5,Scala 2.11),但在6.4的运行时也不能工作。

我有一个delta表,表的列数如下,按创建日期分区。

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" 

插得很好。我搜索了一下,没有看到类似的问题,有什么建议吗?我是不是漏掉了什么明显的问题?

答案

看起来你在 matchName 在你的python代码中

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

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

无法使用 PySpark 插入 SQL,但可以在 SQL 中使用

无法使用 Python 字典作为列值执行 SQL 插入命令

Oracle MERGE 重写为 PySpark。如果为空 - 更新,否则 - 插入

无法使用 pyodbc 在 Access 数据库的表中插入/更新长文本字段

AWS Glue PySpark 无法计算记录