Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark Scala SaveMode.Append-它只是追加还是同时更新?_Scala_Apache Spark_Hdfs - Fatal编程技术网

Spark Scala SaveMode.Append-它只是追加还是同时更新?

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将仅将数据帧的内容附加到该位置的现有数据 这是否意味着每次我都必须删除表并重新创建

如果我有一个DF,并且我正在向这样一个位置写信:

df.write.modeSaveMode.Append.parquetoutputFilePath

它只是简单地附加到outputFilePath还是同时更新?例如,如果我有一行3 | a | 27,并附加一个3 | a | 200的DF,它将有两行?这是否意味着每次我都必须删除表并重新创建

它只是简单地附加到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()
它只是简单地附加到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()