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

如何處理Json文件的模式驗證。使用磚自動裝卸機?

SRK
貢獻者三世

以下的細節要求:

1。我使用磚筆記本從卡夫卡的主題和寫作讀取數據到ADLS Gen2容器即。我著陸層。

2。我用火花從卡夫卡和寫代碼來讀取數據到著陸層。

3所示。下一步是,我正在讀Json文件從著陸層搬到銅層,這是另一個容器ADLS代。為此,我使用自動裝卸機使用自動裝卸機與達美住表創建表。

這是相同的代碼:

@dlt.table (

name =表名,

評論= "創建青銅表”,

table_properties = {

“質量”:“青銅”

}

)

def Bronze_Table_Create ():

回報(

火花

.readStream

.format (“cloudFiles”)

.option (“cloudFiles。格式”、“json”)

.option (“cloudFiles。schemaLocation”, schemaLocation)

.option (“cloudFiles。在ferColumnTypes", "true")

.option (“cloudFiles。schemaEvolutionMode”、“救援”)

.load (sourcelocation)

)

4所示。這段代碼對我來說很不錯,它推斷模式。然而,我有一個場景中,我嚐試處理。我一步一步提到如下:

我。我想驗證模式,所以如果有任何的變化模式,我應該得到通知和工作應該失敗。我可以處理它SchemaEvolutionMode。但是,我的情況是完全不同的。在我的情況下,我在一列RawData,這是類型的對象,並沒有指定的模式。它將動態值,因為如果我推斷模式和應用模式驗證,然後每次將帶來新的模式和模式失配誤差。

二世。是有任何解決方案,我可以排除嗎RawData列從模式驗證,所以我允許這個專欄有任何類型的數據。

我掙紮著從很長一段時間。任何幫助是有益的。請讓我知道如果需要任何額外的細節。

示例Json:

{

"頭":{

“SchemaVersion”:“1.0”,

“EventId”:“123”,

“EventTime_UTC”:“2022-09-22 16:18:16”,

“環境”:“開發”,

},

“有效載荷”:{

" RawData ": {

“CusID”:“12345”,

“狀態”:“等待”,

“LastModifiedAt”:“2022-09-22 16:18:12”,

:“ContainerName違約,

“CreatedAt”:“2022-09-22 16:18:11”* RawData中的數據不一致喜歡它可以有不同的列*

},

"數據":{

“CustID”:“12345”,

“ArrayKeys”:(

{

:“ArrayName WorkHistory”,

:“ArrayKeyName SampleId”

}

]

}

}

}

4回複4

Hubert_Dudek1
尊敬的貢獻者三世

也許不驗證模式比在下一步做dlt期望檢查所有必需的字段有數據結構類型。

SRK
貢獻者三世

嗨@Hubert杜德克,實際上我想驗證模式,以便我能知道如果有任何額外的字段除了模式添加到數據中。如果我期望檢查下一個層次,我需要支票申請個人列有很多列,那麼它將很難處理。有什麼方法我可以排除特定列像RawData從模式執行我的情況嗎?所以我不會申請的RawData列不明或動態數據。

Vidula_Khanna
主持人
主持人

嗨@Swapnil Kamle

希望一切都好!隻是想檢查如果你能解決你的問題,你會很高興分享解決方案或答案標記為最佳?其他的請讓我們知道如果你需要更多的幫助。

我們很想聽到你的聲音。

謝謝!

SRK
貢獻者三世

抱歉延遲的回複。我沒有得到確切的答案

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

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

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

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

Baidu
map