大家好,
我用DLT(δ生活表)和我實現的一些變化數據捕獲用於重複數據刪除。現在我創建一個下遊表讀取DLT作為流(dlt.read_stream(“<表>”))。
我一直收到這個錯誤:
>檢測數據更新(例如部分- 00000 - 6723832 - a - b8ca - 4表達a20 b576 - d69bd5e42652 c000.snappy.parquet)在源表版本11。這是目前不支持。如果你想忽略更新,設置選項“ignoreChanges”到“真正的”。如果你想反映的數據更新,請重啟該查詢以全新的關卡目錄。
我試過這些選項激活配置:
@dlt。視圖(name = " _wp_strategies_dup "評論=“此表包含測試策略表”,spark_conf = {“ignoreChanges”: "真正的"})
spark.readStream.option (“ignoreChanges”,“真正的”).table (“LIVE.wp_parameters”)
dlt.option (“ignoreChanges”,“真正的”).read_stream (“wp_parameters”)
到目前為止沒有任何工作。是因為與DLT這個配置是不可能的?或者是因為有另一種方式設置此配置?
在DLT read_stream,我們不能使用ignoreChanges / ignoreDeletes。這些配置有助於避免失敗,但它實際上是忽視了對上遊操作完成。所以你需要手動執行刪除或更新在下遊。(火花結構化流僅支持越來越多/附加來源)。
如果你有使用情況下,上遊可以有更新/刪除你想通過這些操作自動下遊您可以遵循以下建議DLT架構。在這兩個設置使用生活表從上遊有助於處理更新/刪除。
建築1:
您可以使用生活表處理這個問題。使用的情況下,您在青銅上執行更新/刪除表來反映這些銀表中刪除/更新,您可以創建銀表作為生活表
參考下麵的圖:
架構2:
其他方式來處理更新/刪除和通過下遊是可以使用的DLT疾病預防控製中心。疾控中心建築看起來像下麵。
DLT青銅表- - > DLT銀使用CDC apply_changes——> DLT金住表
這裏銀表選擇改變數據從銅(更新或刪除)並做必要的操作。
在這兩個設置,如果你刪除/更新任何記錄在銅表GDPR等用例,這刪除/更新會自動流向銀表(您不需要手動刪除/更新從銀,然後金)。現在黃金將選擇這個銀表並執行刷新。(生活表)。
還DLT有著特殊的功能enžyme。Enžyme有助於避免完整re-computation現場表和提高性能。
enžyme是什麼?
比現有的方法完全驗算生活表中的所有行,甚至行不需要改變——enžyme可能顯著降低資源利用率和提高整體管道延遲僅更新必要的生活表中的行實現結果。
更多細節enžyme您可以參考這個博客://m.eheci.com/blog/2022/06/29/delta-live-tables-announces-new-capabilities-and-performa..。