hive表有多个分区字段时如何只更新一个分区字段?
Posted
技术标签:
【中文标题】hive表有多个分区字段时如何只更新一个分区字段?【英文标题】:How to update only one partition field when the hive table has multiple partition fields? 【发布时间】:2021-07-18 03:29:50 【问题描述】:我有一个名为 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
【问题讨论】:
【参考方案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');
...
否则您可以创建一个具有相同结构但由新分区分区的新表。然后从旧表插入新表,然后删除新表。
【讨论】:
以上是关于hive表有多个分区字段时如何只更新一个分区字段?的主要内容,如果未能解决你的问题,请参考以下文章