我有這張桌子
CREATE TABLE `db`.`customer_history` (
`name` STRING,
`addrress` STRING,
`filename` STRING,
`dt` DATE)
USING delta
PARTITIONED BY (dt)
當我使用它將磁區資料加載到表中時
df
.write
.partitionBy("dt")
.mode("overwrite")
.format("delta")
.saveAsTable("db.customer_history")
出于某種原因,它會覆寫整個表。我認為覆寫模式只會覆寫磁區資料(如果存在)。我的理解正確嗎?
uj5u.com熱心網友回復:
要覆寫單個磁區,請使用:
df
.write
.format("delta")
.mode("overwrite")
.option("replaceWhere", "dt >= '2021-01-01'")
.save("data_path")
uj5u.com熱心網友回復:
Delta 使用該replaceWhere選項可以輕松更新某些磁盤磁區。您可以選擇性地僅覆寫與磁區列上的謂詞匹配的資料,如下所示,
dataset.write.repartition(1)\
.format("delta")\
.mode("overwrite")\
.partitionBy('Year','Week')\
.option("replaceWhere", "Year == '2019' AND Week >='01' AND Week <='02'")\ #to avoid overwriting Week3
.save("\curataed\dataset")
注意:當您必須運行計算成本高的演算法時,replaceWhere 特別有用,但僅限于某些磁區”
您可以參考:鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375525.html
