Spark Scala SaveMode.Append-它只是追加还是同时更新?
如果我有一个DF,并且我正在向这样一个位置写信: df.write.modeSaveMode.Append.parquetoutputFilePath 它只是简单地附加到outputFilePath还是同时更新?例如,如果我有一行3 | a | 27,并附加一个3 | a | 200的DF,它将有两行?这是否意味着每次我都必须删除表并重新创建 它只是简单地附加到outputFilePath还是同时更新 Append将仅将数据帧的内容附加到该位置的现有数据 这是否意味着每次我都必须删除表并重新创建 对。但你们也可以看看使用拼花地板格式的Spark带来的酸性事务 对于该用例,您可以使用:Spark Scala SaveMode.Append-它只是追加还是同时更新?,scala,apache-spark,hdfs,Scala,Apache Spark,Hdfs,如果我有一个DF,并且我正在向这样一个位置写信: df.write.modeSaveMode.Append.parquetoutputFilePath 它只是简单地附加到outputFilePath还是同时更新?例如,如果我有一行3 | a | 27,并附加一个3 | a | 200的DF,它将有两行?这是否意味着每次我都必须删除表并重新创建 它只是简单地附加到outputFilePath还是同时更新 Append将仅将数据帧的内容附加到该位置的现有数据 这是否意味着每次我都必须删除表并重新创建
val updatesDF = // updates data
DeltaTable.forPath(spark, outputFilePath)
.as("destination")
.merge(updatesDF.as("updates"), "destination.Id = updates.Id")
.whenMatched
.updateExpr(Map("value" -> "updates.value"))
.whenNotMatched
.insertExpr(Map("id" -> "updates.id", "value" -> "updates.value"))
.execute()
它只是简单地附加到outputFilePath还是同时更新
Append将仅将数据帧的内容附加到该位置的现有数据
这是否意味着每次我都必须删除表并重新创建
对。但你们也可以看看使用拼花地板格式的Spark带来的酸性事务
对于该用例,您可以使用:
val updatesDF = // updates data
DeltaTable.forPath(spark, outputFilePath)
.as("destination")
.merge(updatesDF.as("updates"), "destination.Id = updates.Id")
.whenMatched
.updateExpr(Map("value" -> "updates.value"))
.whenNotMatched
.insertExpr(Map("id" -> "updates.id", "value" -> "updates.value"))
.execute()