Hive表操作三(修改表)
Posted AI大数据与机器学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive表操作三(修改表)相关的知识,希望对你有一定的参考价值。
秋天 autumn Hive表操作三(修改表)
注:大多数表属性可以通过ALTER TABLE语句来进行修改,这种操作会修改元数据,但不会修改数据本身
*表重命名
eg: ALTER TABLE app RENAME TO user;
*增加、修改和删除表分区
--ALTER TABLE tablename ADD PARTITION ... 语句用于为表(通常是外部表)增加一个新的分区
eg: ALTER TABLE app ADD IF NOT EXISTS
PARTITION (timetype=hour, clct_day='2018-07-26' ) LOCATION '/data/test/app/hour/'2018-07-26' '
PARTITION (timetype=hour, clct_day='2018-07-27' ) LOCATION '/data/test/app/hour/'2018-07-27' '
PARTITION (timetype=hour, clct_day='2018-07-28' ) LOCATION '/data/test/app/hour/'2018-07-28' '
... ;
--移动位置来修改某个分区的路径
eg: ALTER TABLE app PARTITION (timetype=hour, clct_day='2018-07-26' )
SET LOCATION '/home/data/app/hour/'2018-07-26' ';
这个命令不会将数据从旧的路线转移走,也不会删除旧的数据。
--删除分区
eg: ALTER TABLE app DROP IF EXISTS PARTITION (timetype=hour, clct_day='2018-07-26' );
注:对于管理表,即使是使用ALTER TABLE...ADD PARTITION 语句增加的分区,分区内的数据也是会同时和元数据信息一起被删除的
对于外部表,分区内数据不会被删除
*修改列信息
--对某个字段进行重命名,并修改其位置、类型或者注释
eg: ALTER TABLE app
CHANGE COLUMN hour time_h INT
COMMENT 'THE hours part of the timestamp'
AFTER uv;
注:即使字段名或者字段类型没有改变,也需要完全指定旧的字段名,并给出新的字段名及新的字段类型
此例子我们将字段转移到uv字段之后,如果要转移到第一个位置,只需要用FIRST关键字替代AFTER other_column子句即可
和通常一样,这个命令只会修改元数据信息,如过移动字段,那么数据也应和新的模式匹配
*增加列
--我们可以在分区字段前增加新字段到已有字段之后
eg:ALTER TABLE app ADD COLUMNS(
appversion STRING COMMENT 'Application version',
nettype STRING COMMENT 'logining application with nettype');
*删除或者替换列
--移除之前所有字段并重新指定了新字段
eg:ALTER TABLE app REPLACE COLUMNS(
time int,
name string,
message string);
解析:这个语句实际上重命名了之前的hour字段并且从原表移除了字段pv,uv,增加了message字段,因为是ALTER语句,所以只有表的元数据信息改变了
*修改表属性
--可以增加附加的表属性或者修改已经存在的表属性,但是无法删除属性
eg:ALTER TABLE app SET TBLPROPERTIES(
'notes'='this column is always NULL');
*修改存储属性
--有几个ALTER TABLE 语句用于修改存储格式和SerDe属性
eg:ALTER TABLE app
PARTITION (timetype string,clct_day string )
SET FILEFORMAT SEQUENCEFILE;
解析:以上语句是将一个分区的存储格式改成了SEQUENCEFILE,如果是分区表,需要使用PARTITION子句
春种一粒粟,秋收万颗子。
四海无闲田,农夫犹饿死。
以上是关于Hive表操作三(修改表)的主要内容,如果未能解决你的问题,请参考以下文章