你好,
我們正在遷移到磚運行時從9.1 10.4 LTS LTS但我們遇到奇怪的行為問題。我們現有的代碼工作直到運行時10.3和10.4在它停止工作。
問題:
我們有一個嵌套的json文件,我們是壓扁成一個火花數據幀使用下麵的代碼:
adaccountsdf = df。withColumn (Exp_Organizations, F.explode (F.col (organizations.organization))) \ .withColumn (Exp_AdAccounts, F.explode (F.col (Exp_Organizations.ad_accounts))) \ .select (F.col (Exp_Organizations.id) .alias (“organizationId”), F.col (Exp_Organizations.name) .alias (“organizationName”), F.col (Exp_AdAccounts.id) .alias (“adAccountId”), F.col (Exp_AdAccounts.name) .alias (“adAccountName”), F.col (Exp_AdAccounts.timezone) .alias(“時區”))
當我們查詢dataframe它當我們做下麵的選擇(藏結果由於保密):
顯示器(adaccountsdf.select(“*”))或顯示(adaccountsdf)
當我顯示dataframe我們得到以下模式:
根|——organizationId:字符串(nullable = true) |——organizationName:字符串(nullable = true) |——adAccountId:字符串(nullable = true) |——adAccountName:字符串(nullable = true) |——時區:字符串(nullable = true)
所以它應該的樣子。現在我們開始選擇過去3字段(adAccountId adAccountName和時區),我們得到以下錯誤:
然而當我們選擇單個列它工作正常:
有人知道這是為什麼會發生呢?這是一個非常奇怪的錯誤,隻有出現在磚10.4運行時。以前所有運行時包括10.3、10.2、10.1和9.1 LTS工作好。這個問題似乎是由於使用爆炸函數已經列dataframe爆炸。
更新:
出於某種原因,當我運行adaccountsdf.cache ()之前我運行select語句的問題就消失了。還想知道是什麼導致了這個問題在運行時10.4而不是其他的。