我将拼花数据划分为:
batch_date=2023-03-03/batch_hour=08
我必须复制这个数据在BigQuery表。我创建的表有batch_databatch_hour作为集群列。
我不覆盖BigQuery表中的数据,因为要求是覆盖batch_date的数据和batch_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_hourbatch_date.
让我知道,有没有办法只覆盖小时查询日期.
感谢Spark BigQuery连接器目前支持单个分区覆盖,这意味着在您的情况下,整个分区中的数据(即给定日期的数据)将被删除。
但是,根据您需要数据的天数,您可以按小时对其进行分区。在这种情况下,每个分区代表一个小时(而不是一天),因此重写将只擦除这个特定的小时。请注意,每个表4000个分区的限制仍然有效,因此假设您拥有所有24小时的记录,这将为您提供大约165天的数据。