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

修改自動裝卸機的Json模式存儲在一個文件

kpendergast
貢獻者

我們正在閱讀一個S3 bucket,包含一個幾百萬的json文件。閱讀的模式存儲在一個dbfs filestore的json文件。這個文件然後利用自動裝卸機夜間到三角洲表編寫新的文件。皮卡新字段的更新模式。字段的總量約為260,但在應用程序而異。大多數字段是在大型嵌套數組這是我們遇到的問題。閱讀將推斷列在這些嵌套數組數據類型longtype或雙取決於當前字段中的值。領域內嵌套數組不支持的數據類型的變化。因為某些原因推斷列不同,這個過程和一個新的臨時表創建支持的新模式嵌套數組。

這是代碼來讀取、保存和查看一個文件中的模式:

在s3 #閱讀文件

s3_df = spark.read.format (json) .load (“s3a: / /數據/ * . json”)

#保存模式

張開(" / dbfs / FileStore s3 /模式/ s3_schema_1222。f json”、“w”):

json.dump (s3_df.schema.jsonValue (), f)

#視圖模式文件

張開(" / dbfs / FileStore s3 /模式/ s3_schema_1222。f_read json”、“r”):

在f_read線:

print(線)

這裏是輸出的一個片段:

{“類型”:“結構”、“字段”:[{“名稱”:“市場”、“類型”:“弦”、“空”:真的,“元數據”:{}},{“名稱”:“marketDownMarketPriceProviders”,“類型”:“弦”、“空”:真的,“元數據”:{}},{“名稱”:“marketItineraries”,“類型”:{“類型”:“數組”,“應用”:{“類型”:“結構”、“字段”:[{" name ":“adultAlternativeItineraryDynamicDiscountAmount”、“類型”:“雙”、“空”:真的,“元數據”:{}},{“名稱”:“adultAlternativeItineraryTotal”,“類型”:“雙”、“空”:真的,“元數據”:{}},{“名稱”:“adultEligible”,“類型”:“布爾”,“空”:真的,“元數據”:{}},{“名稱”:“availableSeatCount”,“類型”:“長”,“空”:真的,“元數據”:{}}

正確的字段數據類型我複製/粘貼整個輸出到一個文本編輯器,做一些修正現有油田的嵌套數組當前三角洲表相匹配。然後粘貼到一個筆記本電池作為一個python變量的字符串值並把它寫回文件。

這就是我目前的解決方案休息因為編碼的字符串不正確的文件。後將字符串寫入文件和打印輸出看起來像這樣:

“{\“類型\”:\“struct \”, \“字段\”:[{\“\”:\“市場\”,\“\”,\“\”,\“nullable \”:真的,\ \“元數據”:{}},{\“\”:\“marketDownMarketPriceProviders \”, \“\”, \“\”, \“nullable \”:真的,\ \“元數據”:{}},{\“\”:\“marketItineraries \”, \“類型\”:{\“類型\”:\“數組\”,\“應用\”:{\“類型\”:\“struct \”, \“字段\”:[{\“\”:\“adultAlternativeItineraryDynamicDiscountAmount \”, \“\”, \“雙\”,\“nullable \”:真的,\ \“元數據”:{}},{\“\”:\“adultAlternativeItineraryTotal \”, \“\”, \“雙\”,\“nullable \”:真的,\ \“元數據”:{}},{\“\”:\“adultEligible \”, \“\”, \“布爾\”,\“nullable \”:真的,\ \“元數據”:{}},{\“\”:\“availableSeatCount \”, \“\”, \“\”, \“nullable \”:真的,\ \“元數據”:{}

我如何寫模式字符串到文件,並讓它在正確的格式自動裝卸機嗎?

我打開解決方案,他人使用但更喜歡使用這個過程如果所有可能的。

1接受解決方案

接受的解決方案

kpendergast
貢獻者

如果有人好奇我最終隻是把模式作為字符串傳遞給. schema (eval (the_schema)) StructType格式和不使用基於文件的方法。

在原帖子查看解決方案

1回複1

kpendergast
貢獻者

如果有人好奇我最終隻是把模式作為字符串傳遞給. schema (eval (the_schema)) StructType格式和不使用基於文件的方法。

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

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

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

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

Baidu
map