我想做一個動態分區覆蓋在三角洲表使用replaceWhere選項。這是工作正常,直到我升級9.1 DB運行時從8.3.x LTS。我是連接“年”、“月”和“天”列,然後使用to_date函數定義replaceWhere條件。我能找到在文檔中有一個新特性添加9.1 LTS -的一部分三角洲現在支持任意replaceWhere。可能這也引入了一個錯誤。我使用的火花conf設置回退到舊的行為。
spark.conf.set (“spark.databricks.delta.replaceWhere.dataColumns.enabled”,假)
但是會很高興有一個更好的解決這個問題。這是我與replaceWhere寫聲明。
dataframeToWrite.write.format(“δ”).mode(“覆蓋”).partitionBy(“年”、“月”、“日”)。選項(“replaceWhere”s”to_date (concat(“-”,月,“-”,天))(datesList美元)”).save (outputLocation)
錯誤信息:
引起的:org.apache.spark。SparkException:工作階段失敗而終止:任務0階段11.0失敗了4次,最近的失敗:在舞台上失去了任務0.3 11.0 (TID 13) (): . lang。UnsupportedOperationException:方式不能生成代碼表達式:to_date (concat((# 2810年作為字符串),,(月2863 #字符串),,演員(作為字符串)天# 2916),沒有一個)
PS:我也試圖在to_date指定格式,但也沒有幫助。
我認為這既不是。
嗨@Hubert杜德克,為此我還必須在目標三角洲表添加新列,我不想做。添加新列隻在dataframe寫不會工作,因為兩個原因,
是的,但你至少可以做測試即使dataframe的小副本,這樣更容易發現問題