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

分區表鑲花(文件夾),不同的結構

tarente
新的貢獻者三世

你好,

我們有一個鑲花表(文件夾)在Azure存儲賬戶。

分區表的列PeriodId(代表一天的格式名稱),數據從20181001到20211121(昨天)。

我們有一個新的發展,添加一個新列從20211101開始這個表。

當我們讀到的數據區間(20211101,20211101)在一個Scala筆記本,dataframe不返回新列。

什麼是最好的方法來解決這個問題,而無需重寫所有分區所有列?

在三角洲格式表而不是拚花可以解決問題嗎?

或者隻是改變表(文件夾)的方式保存嗎?

這是一段代碼使用創建表(如果它不存在的話)插入數據分區。

val fileFormat = "拚花" val filePartitionBy = " PeriodId " val fileSaveMode =“覆蓋”val filePath = " abfss: / / <容器> @ <存儲賬戶>.dfs.core.windows.net/ <文件夾> / <表名稱>”var fileOptions =地圖(“標題”- >“真正的”,“overwriteSchema”- >“true”) dfFinal .write .format (fileFormat) .partitionBy (filePartitionBy) .mode (fileSaveMode) .options (fileOptions) .save (filePath)

提前謝謝,

蒂亞戈年金。

3回複3

Hubert_Dudek1
尊敬的貢獻者三世

我認為問題是覆蓋覆蓋時覆蓋所有文件夾。的解決方案是混合添加與動態覆蓋它隻覆蓋文件夾的數據和不影響舊分區:

spark.conf.set (“spark.sql.sources。partitionOverwriteMode”、“動態”)

tarente
新的貢獻者三世

你好休伯特,

覆蓋不是覆蓋所有文件夾,它隻會增加新的列重寫分區。

問題是,即使我隻過濾器的重寫分區dataframe我不看到新添加的列。然而,如果我打開一個拚花重寫分區的文件,我看到新的列。

如果我打開的拚花文件的原始分區,我不看到新的列。

即。,the拚花文件中的新列新的分區但不是在原來的分區。這是我所期望的。

我希望並沒有發生什麼,就是讓新列當過濾隻重寫分區。

謝謝,

蒂亞戈年金。

嗨@Tiago年金

你試試模式演化?這裏的文檔https://spark.apache.org/docs/latest/sql-data-sources-parquet.html schema-merging

我認為你表δ將解決這個問題。您可能想要測試它。

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

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

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

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

Baidu
map