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

to_date不正常運行後引入任意replaceWhere磚9.1 LTS

kolangareth
新的貢獻者三世

我想做一個動態分區覆蓋在三角洲表使用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指定格式,但也沒有幫助。

9回複9

kolangareth
新的貢獻者三世

我認為這既不是。

  • replaceWhere可以表達,因為我已經嚐試使用concat to_date也不會失敗。
  • 表達式並不是錯誤的,因為它使用的火花conf設置回退到舊的行為也同樣的表達式在過濾器,withColumn。

Hubert_Dudek1
尊敬的貢獻者三世

你能早些時候試圖生成列:

.withColumn (“conditionColumn”, to_date……

簡化代碼replaceWhere將更容易調試,現在抱怨to_date

kolangareth
新的貢獻者三世

嗨@Hubert杜德克,為此我還必須在目標三角洲表添加新列,我不想做。添加新列隻在dataframe寫不會工作,因為兩個原因,

  1. 三角洲將模式mismacth當寫作時發生錯誤。
  2. 我認為replaceWhere條件基本上是應用於目標三角洲表而不是輸入dataframe。所以條件應該在一些已經存在的表的列。

Hubert_Dudek1
尊敬的貢獻者三世

是的,但你至少可以做測試即使dataframe的小副本,這樣更容易發現問題

匿名
不適用

@Prasanth Kolangareth——休伯特的答案解決問題嗎?如果是的,你會很高興它標記為最好,其他成員可以找到解決方案更快嗎?

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

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

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

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

Baidu
map