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

DLT管道故障,檢測到一個數據更新……這是目前不支持

bakselrud
新的貢獻者三世

我們使用DLT管道磚工作區由微軟Azure平台失敗的間歇性和不清楚原因。Beplay体育安卓版本

管道如下:

spark.readStream.format(“δ”)。選項(“mergeSchema”,“真正的”)。選項(“ignoreChanges”,“真正的”).load (topic_name)

dlt.create_streaming_live_table (…)

dlt.apply_changes (

目標= target_table_name,

源= f“序列({topic_name})”,

鍵=(“關鍵”),

sequence_by =坳(“序列”),

stored_as_scd_type = " 1 "

)

至此,管道工作或不工作,根據周的日子(月球階段),輸入數據是相同的!它可能工作幾天,然後發出一個錯誤:“

org.apache.spark.sql.streaming。StreamingQueryException:查詢MAIN_FLOW_MOVES [id = e8a4577a - 5 - d1a 4 - bfb 9801 - 8 f47c8534f05 runId = b9364adb-a8d1-4ccf-af30-f00ad5b66520]終止與例外:發現一個數據更新(例如部分- 00004 - 7397764 - 432 - 48 - a1 - - c - a104 - 03192 - f199def c000.snappy.parquet)在源表版本3。這是目前不支持。如果你想忽略更新,設置選項“ignoreChanges”到“真正的”。如果你想反映的數據更新,請重啟該查詢以全新的關卡目錄。

要求完成SCD 1型滿意:每個唯一鍵都有獨特的序列號和沒有出現衝突或不一致的可能性。我們已經檢查很多次。

正如我所說,相同的管道工作或不工作沒有任何變化和不穩定行為的原因還不清楚。就我而言,所有條件正確並持續完成SCD 1型攝入已經滿足。

請幫助我們理解這種不穩定行為的原因。這影響我們的能力去忍受這個應用程序。

12個回複12

建議改變幫助了嗎?

bakselrud
新的貢獻者三世

我試過幾種運行的DLT管道的最後一步是SCD 1型和所有的成功運行。我還沒有嚐試開始新的管道,從這一個,但我希望工作

之前我有記憶,我添加了一個額外的步驟後的管道SCD 1型步驟中,它所做的工作,但當我添加了後續步驟開始失敗。當時我並沒有把兩者結合在一起,因為它似乎對我來說太過牽強。

目前看起來我們有一個解決方案,盡管這是一個非常不尋常的一個設想

bakselrud
新的貢獻者三世

好吧,所以在做一些調查的方式解決我最初的問題,我想我們得到一些清晰。

考慮下麵的數據幀所攝取的DLT流管道:

dfMock = spark.sparkContext.parallelize ([[1 0 2], [1, 1, 3]])。\

toDF (StructType ([StructField(“關鍵”,LongType(),假),StructField (seq, LongType(),假),StructField(“數據”,LongType(),假))))

攝入這第一次,使用DLT 1型更新,結果在成功運行。攝入這第二次失敗。

為什麼?

因為沒有檢查點相關的輸入數據。那一刻流管道停了下來,再次運行,似乎自然地處理文檔相同的數據和失敗,因為它認為它看到一個更新相同的鍵。

是DLT管道的設計者想什麼關於這個最初?我們想離開了。

現在,答案從磚在這一點上應該是這樣的:“當然,這是因為你誤解了如何使用流數據源數據處理工作。在流數據來源的檢查點照顧加工和未加工記錄。做作業”

我們做了家庭作業和評估流讀/流DLT管道。然而我們發現,即使在這種情況下,DLT管道失敗,因為它不承認在其停止和重新啟動它讀取標準輸入流的已經在前麵跑。這是問題的根源。

現在,自從我打破你的一些問題,你能幫助我了解如何正確使用DLT管道在重啟所以不休息嗎?是不應該撿起從輸入流的檢查點,它已經失敗(或停止)簡訊嗎?

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

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

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

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

Baidu
map