hive 修改操作
Alter Table 语句
Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作
它是在Hive中用来修改的表。
语法
声明接受任意属性,我们希望在一个表中修改以下语法。
-
ALTER TABLE name RENAME TO new_name
-
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
-
ALTER TABLE name DROP [COLUMN] column_name
-
ALTER TABLE name CHANGE column_name new_name new_type
-
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
(1)、重命名表
Rename To… 语句
ALTER TABLE table_name RENAME TO new_table_name;
上面这个命令可以重命名表,数据所在的位置改变,但分区名都没有改变。
下面是查询重命名表,把 employee 修改为 emp。
ALTER TABLE employee RENAME TO emp;
(2)、改变列名/类型/位置/注释
-
ALTER TABLE table_name CHANGE
-
[CLOUMN] col_old_name col_new_name column_type
-
[CONMMENT col_conmment]
-
[FIRST|AFTER column_name];
这个命令可以修改表的列名,数据类型,列注释和列所在的位置顺序,FIRST将列放在第一列,AFTER col_name将列放在col_name后面一列,
例子1:
ALTER TABLE test_table CHANGE col1 col2 STRING COMMENT 'The datatype of col2 is STRING' AFTER col3;
上面的语句将列名col2修改为col2,数据类型为STRING并添加注释,最后将这一列放在col3后面。
例子2:下表包含employee表的字段,它显示的字段要被更改(粗体)。
字段名 | 从数据类型转换 | 更改字段名称 | 转换为数据类型 |
---|---|---|---|
eid | int | eid | int |
name | String | ename | String |
salary | Float | salary | Double |
designation | String | designation | String |
下面查询重命名使用上述数据的列名和列数据类型:
-
hive> ALTER TABLE employee CHANGE name ename String;
-
hive> ALTER TABLE employee CHANGE salary salary Double;
(3)、增加/更新列
ADD COLUMNS允许用户在当前列的末尾,分区列之前添加新的列,REPLACE COLUMNS允许用户更新列,更新的过程是先删除当前的列,然后在加入新的列。注:只有在使用native的SerDE时才可以这么做。
ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [CONMMENT col_comment], ...);
添加列语句,下面的查询增加了一个列名dept在employee表。
hive> ALTER TABLE employee ADD COLUMNS (dept STRING COMMENT 'Department name');
REPLACE语句
以下从employee表中查询删除的所有列,并使用emp替换列:
hive> ALTER TABLE employee REPLACE COLUMNS ( eid INT empid Int, ename STRING name String);
(4)、增加表的属性
ALTER TABLE table_name SET TBLPEOPERTIES table_properties;
用户可以使用这个语句增加表属性,table_properties的结构为(property_name=property_value,property_name=property_value, ...),目前last_modified_time(最后修改时间),last_modified_user(做最后修改的用户)是由Hive自动管理的。用户可以向列中添加自己的属性,然后使用DISCRIBE EXTEBDED TABLE来获取这些信息。
(5)、增加SerDE属性
-
ALTER TABLE table_name SET SERDE serde_class_name
-
[WHIT SERDEPROPERTIES serde_properties];
ALTER TABLE table_name SET SERDEPROPERTIES serde_properties;
上面两个命令都允许用户想SerDE对象增加用户定义的元数据。Hive为了序列化和反序列化数据,将会初始化SerDE属性,并将属性传给表的SerDE。这样用户可以为自定义的SerDe存储属性。上面serde_properties的结构为(property_name=property_value,property_name=property_value, ...)。
(6)、修改表文件格式和组织
-
ALTER TABLE table_name SET FILEFORMAT file_format;
-
ALTER TABLE table_name CLUSTERED BY (col_name, col_name, ...)
-
[SORTED By (col_name, ...)] INTO num_buckets BUCKETS;
上面两个命令都修改了表的物理属性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?