我想做一個動態分區覆蓋在三角洲表使用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指定格式,但也沒有幫助。
嗨@Werner Stinckens, to_date函數沒問題其他地方像過濾器一樣,withColumn等等。如果你想創建一個新的列dataframe replaceWhere然後使用它——這不是我想做的事情,因為這樣做我必須在目標三角洲表添加新列。