hive的常用命令:
一、hive 管理表(内部表)与外部表的互相转换
1.修改外部表emp为内部表(emp为表名)
alter table emp set tblproperties ('EXTERNAL'='FALSE');
2.修改内部表emp为外部表
alter table emp set tblproperties ('EXTERNAL'='TRUE');
注意:(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写!
二、hive的分区操作
1、删除分区
ALTER TABLE table_name DROP IF EXISTS PARTITION (dt=’2008-08-08’);
ALTER TABLE table_name DROP IF EXISTS PARTITION (dt=’2008-08-08’, country=’us’);
2、修改分区
ALTER TABLE table_name PARTITION (dt=’2008-08-08’) SET LOCATION “newlocation”;
ALTER TABLE table_name PARTITION (dt=’2008-08-08’) RENAME TO PARTITION (dt=’20080808’);
3、增加分区
alter table table_name if not exists add partition (p_hour='', p_city='', p_loctype='MHA');
三、表级别修改
1、添加列:
ALTER TABLE table_name ADD COLUMNS (col_name STRING);
注:在所有存在的列后面,但是在分区列之前添加一列
2、修改字段:
CREATE TABLE table_name (a int, b int, c int);
ALTER TABLE table_name CHANGE a a1 INT;
ALTER TABLE table_name CHANGE c c1 INT FIRST;
c1 int, b int, a int.
3、删除列示例:
原有Hive表table_name中有a,b,c,d,e这几个字段
将从test_change中删除“d”列:
ALTER TABLE table_name REPLACE COLUMNS (a int, b int,c string,e string);
将d和e两列一起删除:
ALTER TABLE table_name REPLACE COLUMNS (a int, b int,c string);
注:只有内部表管用,外部表会报错可能和版本有关
4、表重命名
ALTER TABLE table_name RENAME TO new_table_name
四、hive修改表路径
1、内部表:
? a.设置新路径
alter table table_name set location 'hdfs://cluster/hive/warehouse/test.db/table_name2
? b.移动文件地址
dfs -mv /hive/warehouse/test.db/table_name /hive/warehouse/test.db/table_name2
2、外部表
-
删除旧表 drop table table_name;
-
移动文件到新位置 dfs -mv /hive/warehouse/test.db/table_name /hive/warehouse/test.db/table_name2
-
新建新表, 并且指定路径为新地址 create EXTERNAL table table2 (....) location '/hive/warehouse/test.db/table_name2'
-
恢复元数据 MSCK REPAIR TABLE table2;
|