首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改Hive分区列名

问如何更改Hive分区列名
EN

Stack Overflow用户
提问于 2015-08-20 06:31:29
回答 5查看 17.6K关注 0票数 11

我必须更改分区列名(而不是分区规范),我在hive和一些google页面中查找命令。我可以找到修改分区规范的选项,

,例如

在/table/country=' US‘中,我可以将美国更改为美国,但我希望将country更改为欧陆。

我觉得更改分区列名的唯一选择是删除和重新创建表。还有别的选择吗?请帮帮我。

提前谢谢。

EN

回答 5

Stack Overflow用户

发布于 2016-08-02 03:27:05

可以通过以下方式更改元数据中的列名:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ChangeColumnName/Type/Position/Comment

但正如文档所述,它只会改变元数据。单元分区被实现为具有命名模式columnName=spec的目录。因此,还需要使用"hadoop“命令更改HDFS上这些目录的名称。

票数 3
EN

Stack Overflow用户

发布于 2018-11-13 16:35:27

您可以使用简单的交换方法更改分区列。

  • 创建一个与当前表相同的新临时表。
  • 将旧表中的所有文件移动到新创建的表位置。 hadoop fs -mv <current_table_name> <temp_table_name>
  • 更改原始表的架构(重命名或删除分区)
  • 使用适当的分区值将临时表数据重新记录/加载到原始表。 hadoop fs -mv <temp_table_name> <current_table_name>
  • msck修复原始表并删除temp_table。

注意:mv命令通过减少复制时间将文件从一个位置移动到另一个位置。或者,我们可以使用LOAD DATA INPATH将数据复制到原始表。

票数 0
EN

Stack Overflow用户

发布于 2019-10-21 12:22:29

不能更改单元格中的分区列,实际上hive不支持更改分区列。

您可以这样想-- Hive通过在hdfs中创建一个带有分区列值的文件夹来存储数据,因为如果您试图更改单元分区,这意味着您试图更改hive表的整个目录结构和数据,如果您在去年进行分区,这是不可能的exp,这就是目录结构的样子。

代码语言:javascript
复制
tab1/clientdata/**2009**/file2
tab1/clientdata/**2010**/file3

如果要更改分区列,可以执行以下步骤

创建另一个带有分区列中所需更改的单元表

代码语言:javascript
复制
Create table new_table ( A int, B String.....)

从上一个表加载数据

代码语言:javascript
复制
Insert into new_table partition ( B ) select A,B from table Prev_table
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32111036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档