有没有一种方法可以覆盖基于Apache Spark的分区和集群列的bigQuery表?

fkaflof6  于 2023-04-07  发布在  Apache
关注(0)|答案(1)|浏览(139)

我有parquet数据分区如下:

batch_date=2023-03-03/batch_hour=08

我需要将这些数据复制到BigQuery表中,我创建的表中分区列为batch_data,聚类列为batch_hour
我不会正确覆盖BigQuery表中的数据,因为要求是覆盖batch_datebatch_hour的数据。
为了从Spark中写入数据,我给出了:

df.write.mode(SaveMode.Overwrite).format("bigquery")
.option("partitionField", "batch_date")
.option("clusterFields", "batch_hour")
.option("datePartition", "batch_date")
.option("temporaryGcsBucket", "temp_bucket")
//All other table options
.save()

通过上面的代码,只有提供的batch_date被覆盖,但它覆盖了batch_date的所有batch_hour
让我知道,有没有一种方法可以只覆盖一个小时日期
谢谢

cbeh67ev

cbeh67ev1#

是的,Spark BigQuery连接器目前支持单个分区覆盖,这意味着在您的情况下,整个分区(即给定日期)中的数据将被删除。
但是,根据您需要数据的天数,您可以按小时对其进行分区。在这种情况下,每个分区代表一个小时(而不是一天),因此覆盖将仅删除该特定小时。请注意,每个表4000个分区的限制仍然有效,因此假设您有所有24小时的记录,这将为您提供大约165天的数据。

相关问题