我有以下增量表
- ----
|A|B |
- ----
|1|10 |
|1|null|
|2|20 |
|2|null|
- ----
我想根據 A 列填充 B 列中的空值。
我想這樣做:
var df = spark.sql("select * from MyDeltaTable")
val w = Window.partitionBy("A")
df = df.withColumn("B", last("B", true).over(w))
這給了我想要的輸出:
- ----
|A|B |
- ----
|1|10 |
|1|10 |
|2|20 |
|2|20 |
- ----
現在,我的問題是:
在我的增量表中正確寫入結果的最佳方法是什么?
我應該合并嗎?用覆寫選項重寫?
我的 delta 表很大,而且會不斷增加,我正在尋找實作這一目標的最佳方法。
謝謝
uj5u.com熱心網友回復:
這取決于包含null您要填充的值的行的分布(也就是它們都在一個檔案中還是分布在許多檔案中?)。
MERGE將重寫整個檔案,因此您最終可能會重寫足夠多的表來證明只是簡單地覆寫它。您必須對此進行測驗以確定最適合您的用例。
此外,要使用MERGE,您需要僅將資料集過濾到更改。MERGE您的示例“所需輸出”表包含所有資料,由于存在重復鍵,您無法在其當前狀態下使用這些資料。
檢查重要!檔案中的部分以獲取更多資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/512174.html
標籤:斯卡拉阿帕奇火花三角洲湖
