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
Apache spark pyspark与Hive一起,append将添加到现有分区并复制数据_Apache Spark_Hive_Pyspark - Fatal编程技术网

Apache spark pyspark与Hive一起,append将添加到现有分区并复制数据

Apache spark pyspark与Hive一起,append将添加到现有分区并复制数据,apache-spark,hive,pyspark,Apache Spark,Hive,Pyspark,我目前正在使用adwords api,我必须处理1天、7天和30天的数据。 因此,spark作业是基本的,加载csv并将其写入带有分区的拼花地板: df.write .mode("append") .format("parquet") .partitionBy("customer_id", "date") .option("path", warehouse_location+"/"+table) .saveAsTable(table) 现在我面临的问题是,7天和30天将在某

我目前正在使用adwords api,我必须处理1天、7天和30天的数据。 因此,spark作业是基本的,加载csv并将其写入带有分区的拼花地板:

df.write
  .mode("append")
  .format("parquet")
  .partitionBy("customer_id", "date")
  .option("path", warehouse_location+"/"+table)
  .saveAsTable(table)
现在我面临的问题是,7天和30天将在某个点(通过1天前)通过已经处理过的数据,因此在我的分区
table/customer\u id/date/file.parquet
上,append将向该分区追加第二个parquet文件

但在这种情况下,我希望新的拼花文件覆盖上一个文件(因为adwords csv将在生成的第一天到7/30天后发生更改)

我环顾四周,如果我尝试使用“覆盖”,它将覆盖整个表,而不仅仅是分区

你对如何在这里进行有什么建议吗

我不是Spark专家,现在我脑子里唯一的选择就是有一个基于文件时间戳的脚本来清理这个地方。但在这里,这似乎不是正确的解决方案


PS:我正在使用Spark 2.4,基于,您应该设置
Spark.sql.sources.partitionOverwriteMode=“dynamic”
属性,然后使用
“overwrite”
模式替换现有表中的各个分区

什么版本的pyspark?我正在用2.4运行它,我将更新我遇到的问题。在纸上有一个
替换where
函数,它没有按描述工作。解决方案是通过sql查询删除分区,然后追加分区。@Christopher感谢您的输入!这是否适用于“拼花”格式?