取消
顯示的結果
而不是尋找
你的意思是:

“發現一個數據更新”,改變了什麼?

tom_shaffner
新的貢獻者三世

在流媒體流,我定期得到一個“檢測到數據更新”錯誤。這個錯誤通常似乎表明,有些事情已經改變了在源表的模式,但它不是立即明顯什麼。在一個案例中,昨天我把流的源表和目標表(工作天前),看不到任何差異模式。有可能我錯過了一些東西,需要編寫一個編程比較,但需要這樣做似乎顯示錯誤消息的問題在我的腦海裏。

如果我刪除並重新創建表和檢查點錯誤就會消失,但是我隻能這樣做很容易,因為我還在開發,有沒有一種方法,尤其是在情況“擦並重啟”不是這樣一個偉大的選擇,看看不同的數據更新拋出這樣一個錯誤?或增加錯誤消息提到改變了什麼?

2回答2

Kaniz
社區經理
社區經理

嗨@Tom沙夫納,一個類似的問題。阿州

讀取流將拋出一個異常如果有更新或刪除在你的δ源。這也是清楚的磚文檔:

結構化流不處理不是一個附加的輸入,將拋出一個異常如果發生任何修改在桌子上用作源。

如果你使用IgnoreChanges,真的,它不會拋出異常,但給你更新行+行已經被處理。

這是因為δ表文件級別上發生的一切。

例如,如果您更新一個文件中的一行(大約),以下將會發生:

  1. 查找和閱讀文件,其中包含要更新的記錄。
  2. 編寫一個新文件,包含更新的文檔+其他數據也在舊的文件。
  3. 舊的文件標記為刪除和新文件添加到事務日誌。
  4. 你讀流將閱讀全新的文件作為“新”記錄。這意味著你可以重複你的蒸汽。

這也是在文檔中提到的。

忽略變化:處理文檔更新如果源表中的文件必須重寫由於數據更改操作,如更新、合並,刪除(分區),或覆蓋。整個行仍可能被釋放。所以你的下遊消費者應該能夠處理重複……

你必須決定如果這是你的用例。

如果你需要地址更新和刪除具體來說,磚改變數據提要,您可以啟用增量表上。

這給你行級詳細信息插入、添加和刪除(在一些額外存儲的成本和IO)。

tom_shaffner
新的貢獻者三世

@Kaniz開羅,謝謝,這對我很有幫助。我假設這個警告表明模式演化,根據你說的可能不是我隻需要打開IgnoreChanges任何時間我有一個流從表接收更新/插入。

很明顯,在這種情況下打開IgnoreChanges不會防止錯誤如果我曾經有一個模式演化,對嗎?我仍然會得到這樣一個變化的通知嗎?還是打開IgnoreChanges我還未能得到警報,意味著什麼?

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map