[英]How to update only one partition field when the hive table has multiple partition fields?
我有一個名為table
的 Hive 表,它有兩個字符串分區字段, years
和month
。 現在我只想更新years
分區而不是更新month
分區。
我嘗試了下面的 sql 但失敗了。
ALTER TABLE table PARTITION (years='2021') RENAME TO PARTITION (years='2020');
Apache calcite 記錄了這一點
org.apache.calcite.runtime.CalciteContextException:Sql 1:從第 1 行第 43 列到第 1 行第 84 列:目標表分區列 2 的數量不等於源分區列 1 的數量
由於分區是文件夾結構,因此您需要提及所有分區名稱。
ALTER TABLE table PARTITION (years='2021',month='1') RENAME TO PARTITION (years='2020',month='1');
ALTER TABLE table PARTITION (years='2021',month='2') RENAME TO PARTITION (years='2020',month='2');
ALTER TABLE table PARTITION (years='2021',month='3') RENAME TO PARTITION (years='2020',month='3');
...
或者,您可以創建一個具有相同結構但由新分區分區的新表。 然后從舊表插入到新表,然后刪除新表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.