簡體   English   中英

hive表有多個分區字段時,如何只更新一個分區字段?

[英]How to update only one partition field when the hive table has multiple partition fields?

我有一個名為table的 Hive 表,它有兩個字符串分區字段, yearsmonth 現在我只想更新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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM