你好,
在我們的場景中我們讀取json文件作為輸入,並包含嵌套結構。的一些屬性結構體數組類型。我們需要改變名字的嵌套的。我們創建了一個新的結構和做演員。
我們正麵臨著以下問題在做
例:測試是進行結構體類型
{“測試”:[{“nestedattr1”:“df”、“columnfield”:“呃”}]
我們需要一個以上
{“測試”:[{“nestedAttr1”:“df”、“columnField”:“呃”}]
我們定義了一個新的結構和應用但當我們正在接受測試作為一個空數組{“測試”:[]}鑄造越來越失敗了。所以我們試圖應用下麵的代碼,但它不工作
df = df.withColumn(“測試”,當(大小(df.test) > 0,坳(“測試”).cast (newteststruct)) .otherwise (df.test))
錯誤:不能解決的“測試”由於數據類型不匹配:不能把數組<字符串>陣列<結構>
請添加你的評論來避免這個問題
因為我認為那和其他表達式應該具有相同的類型。我認為是的
但我們不需要把{“測試”:[]}{“測試”:[{“nestedattr1”:“”,“columnfield”: "})}
如果我們得到測試作為一個空數組,我們應該避免這種轉換
如果我們得到測試{“測試”:[{“nestedattr1”:“df”、“columnfield”:“呃”}]然後進行轉換
有什麼方法可以實現這一目標?主要是在模式級別而不是在每一列的水平