你好,
我新磚和學習對助理工程師認證。
而經曆的部分“構建數據管道與達美住表”。
我想實現變化數據捕獲,但錯誤出在執行工作流。
我不確定我的代碼是不正確的,因為它類似於我們的課程材料。請看下麵的詳細信息,請讓我知道如何解決這個問題。
截屏的筆記本用於管道的定義。
向下滾動的代碼文本和錯誤文本。
代碼
創建或更新表SCD2_RAW直播
選擇current_timestamp () load_time,右(input_file_name (), 13) source_file, *從json. dbfs: / FileStore /表/ J_File_1.json”;
創建或更新直播表SCD2_SILVER;
申請變更成LIVE.SCD2_SILVER
從流(LIVE.SCD2_RAW)
鍵(標識)
序列由load_time
列* (load_time, source_file除外);
——存儲為SCD 1型
——跟蹤曆史(用戶id、名稱、城市);
錯誤
org.apache.spark.sql。AnalysisException:‘SCD2_RAW’是一個流表,但“SCD2_RAW”是沒有讀過流。要麼刪除後的流媒體關鍵字創建條款或讀取輸入流而不是一個表。
謝謝
試用了一下,我認為你的錯誤是因為你想添加SCD直播表。我相信應用變化流表不能使用。
您可以使用一個流表來源。
簡單地改變這條線:
創建或更新直播表SCD2_SILVER;
:
創建或更新生活表SCD2_SILVER;
應該足夠了。
確保你正在運行一個兼容的版本的磚。同樣,如果你想使用追蹤曆史,您需要設置管道集群配置:
pipelines.enableTrackHistory
為true。
我也發現磚SQL解析器給語法錯誤有時和一個小嚐試刪除換行符,等有時可以幫助跟蹤錯誤。
謝謝你Kearon花時間回答。
我試著實施變更建議但現在看到一個不同的錯誤。
錯誤:
org.apache.spark.sql。AnalysisException:不支持的SQL語句表“SCD2_SILVER”:缺少查詢不支持。
修改代碼:
創建或更新表SCD2_RAW直播
選擇current_timestamp () load_time,右(input_file_name (), 13) source_file, *從json. dbfs: / FileStore /表/ J_File_1.json”;
創建或更新生活表SCD2_SILVER;
申請變更成LIVE.SCD2_SILVER
從流(LIVE.SCD2_RAW)
鍵(標識)
序列由load_time
列* (load_time, source_file除外);
謝謝
@GURUPRASAD MADAPURA VENKATESHAIAH,我有錯誤。試圖記住....原因
我試著回憶。同時,這是一個筆記本我已經非常相似,為我工作。如果您嚐試構建你的,一步一步,用這個作為模板,希望將這樣做。很明顯,你並不需要json爆炸部分或where子句。這隻是處理一些數據我處理的混亂。
創建或更新直播表currStudents_ingest選擇*,上校file_modification_time(選擇fi。file_modification_time EXPLODE_OUTER (fi.students)流(LIVE.currStudents_streamFiles) fi) col.id不是零;創建或更新直播表currStudents_SCD;應用到生活變化。currStudents_SCD從流(live.currStudents_ingest)鍵(id)序列file_modification_time存儲為SCD 2型跟蹤曆史*除了(file_modification_time);