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

如何添加現有的差值表的分區

哈裏”id=
貢獻者

我們不需要為δ設置分區表我們沒有許多性能問題和三角洲湖開箱即用的優化為我們偉大的工作。但是現在有一個需要設置一個特定的分區列一些表允許並發三角洲合並分區。

我們使用非托管表與數據坐在s3

最好的方法是什麼現有的三角洲表上添加/更新分區列?

我試過的改變日誌添加分區(日期=日期“2021-09-10”),但它沒有工作也不添加分區所有值的日期

也試著改寫表和設置分區列:

(df.write.format(“δ”).mode .option(“覆蓋”)(“overwriteSchema”,“真正的”).partitionBy(<名稱>上校).saveAsTable(表名稱> <))

但我不認為分區名稱,當我檢查表描述表,所以不確定這是正確的方法。

另一個選擇是重新創建表和我一樣看到我們可以設置分區列在創建一個表,但是真的不想這樣做除了作為最後的手段。

5回複5

Kaniz”id=
社區經理”id=
社區經理

嗨@Harikrishnan P H,

三角洲湖允許您更新一個表的模式。支持以下類型的變化:

  • 添加新列(在任意位置)
  • 重新安排現有的列
  • 重命名現有列

你可以讓這些變化顯式或隱式地使用DML使用DDL。

重要:-

當你更新一個δ表模式,流讀取該表的終止。如果你想繼續流,您必須重新啟動它。

推薦的方法,請參閱生產磚上考慮結構的流媒體應用程序

明確更新模式

您可以使用以下DDL來顯式地改變一個表的模式。

添加列,

ALTER TABLE table_name添加列(col_name data_type[評論col_comment] [colA_name後的第一個|],…)

默認情況下,nullability是正確的。

添加一個列到嵌套,使用以下:

ALTER TABLE (col_name table_name添加列。nested_col_name data_type[評論col_comment] [colA_name後的第一個|],…)

例子:-

如果之前的模式運行ALTER TABLE (colB框添加列。嵌套的字符串field1之後):

——根

| -可樂

| - colB

| + field1

| + field2

後的模式是:

——根

| -可樂

| - colB

| + field1

| +嵌套

| + field2

注意:-

添加嵌套列支持結構。不支持數組和地圖。

你可以在這裏找到它。

來源:-https://docs.m.eheci.com/delta/delta-batch.html添加列

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

我已經嚐試改變表添加分區,但它沒有工作。”

你介意分享的代碼片段嗎?

哈裏”id=
貢獻者

更新了描述

Hubert_Dudek1”id=
尊敬的貢獻者三世

剛讀它並將其保存分區在相同的名稱。但請先備份!

嗨@Hubert杜德克,

謝謝你的回複。

所以,唯一的辦法是讀整個數據重新分區,然後寫正確嗎?

這將添加一個新的分區如果新的分區鍵的值呢

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

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

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

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

Baidu
map