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

當和其他問題

SailajaB
重視貢獻三世

你好,

在我們的場景中我們讀取json文件作為輸入,並包含嵌套結構。的一些屬性結構體數組類型。我們需要改變名字的嵌套的。我們創建了一個新的結構和做演員。

我們正麵臨著以下問題在做

例:測試是進行結構體類型

{“測試”:[{“nestedattr1”:“df”、“columnfield”:“呃”}]

我們需要一個以上

{“測試”:[{“nestedAttr1”:“df”、“columnField”:“呃”}]

我們定義了一個新的結構和應用但當我們正在接受測試作為一個空數組{“測試”:[]}鑄造越來越失敗了。所以我們試圖應用下麵的代碼,但它不工作

df = df.withColumn(“測試”,當(大小(df.test) > 0,坳(“測試”).cast (newteststruct)) .otherwise (df.test))

錯誤:不能解決的“測試”由於數據類型不匹配:不能把數組<字符串>陣列<結構>

請添加你的評論來避免這個問題

1接受解決方案

接受的解決方案

SailajaB
重視貢獻三世

我們使用以下條件解決問題

如果dict (df.dtypes)['測試']! =“數組<字符串>”:

df = df.withColumn(“測試”,(“測試”)上校.cast (newteststruct))

謝謝你!

在原帖子查看解決方案

6個回答6

Kaniz
社區經理
社區經理

嗨@Sailaja B !很高興認識你,謝謝你的問題!看看你的同行在社區中有一個回答你的問題。否則我將盡快給你回電。謝謝。

AmanSehgal
尊敬的貢獻者三世

你能提供你使用的結構嗎?

同時,一個更複雜的示例的輸入和輸出。

SailajaB
重視貢獻三世

你好,

謝謝你的回複. .

我們使用以下結構來改變/數組類型結構與嵌套的新名稱

newteststruct = ArrayType (StructType ([

StructField (“nestedAttr1 StringType ()),

StructField (“columnField StringType ()))))

以json格式輸入將來自其他來源,我們讀到磚df。

這裏我們應用模式轉換根據業務水平得到輸出目標模式。

所以當鑄造我們麵臨一個問題,當我們得到一個空數組通過i / p提取。

謝謝你!

AmanSehgal
尊敬的貢獻者三世

有可能你{“測試”:[]}替換為{“測試”:[{“nestedattr1”:“”,“columnfield”:“}]} ?

因為我認為那和其他表達式應該具有相同的類型。

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

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

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

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

Baidu
map