Hive常用操作汇总

Hive常用操作汇总

表操作

ALTER TABLE name RENAME TO new_name;
--例:将orders表修改为flt_orders
ALTER TBALE olap_engdb.orders RENAME TO olap_engdb.flt_orders;

数据存储位置发生改变,分区名未改变

列操作

修改列

ALTER TABLE name CHANGE col_old_name col_new_name column_type COMMENT 'comment' FIRST|AFTER column_name;
--例:将orders表中的citycode列修改为dcitycode
ALTER TABLE olap_engdb.orders CHANGE citycode dcitycode STRING COMMENT '出发城市三字码' FIRST;

First将列放在第一列,AFTER指定排在某列后面;

列位置更换后数据位置并未发生变化,若要让数据跟着字段一起移动,需更新表数据。

新增列

ALTER TABLE name ADD COLUMES (col_name data_type COMMENT 'comment',......);
--例:在orders表中新增acitycode列
ALTER TABLE olap_engdb.orders ADD COLUMNS (acitycode STRING COMMENT '到达城市三字码');

新增列位于当前列的末尾,分区列之前

替换列/删除列

ALTER TABLE name REPLACE COLUMNS (col_name data_type COMMENT '',...);
--例:删除orders表中其他列,仅保留orderdate字段
ALTER TABLE olap_engdb.orders REPLACE COLUMNS (orderdate string);

REPLACE COLUMNS先删除现存列,然后再增加新列;

注:替换列只能在表使用自带SerDE时使用( DynamicSerDe,MetadataTypedColumnsetSerDe... )

分区操作

新增分区

ALTER TABLE name ADD IF NOT EXISTS PARTITION (PARTITION_SPEC);
--例:在orders表中新增时间分区
ALTER TABLE olap_engdb.orders ADD PARTITION (d = '2019-10-28');

只有在存在分区列的表上执行增加分区的操作,才会成功

重命名分区

ALTER TABLE name PARTITION (PARTITION_SPEC) RENAME TO PARTITION (PARTITION_SPEC);
--例:orders表中2019-10-28的分区修改为2019-10-27的分区
ALTER TABLE olap_engdb.orders PARTITION (d = '2019-10-28') RENAME TO PARTITION (d = '2019-10-27');

删除分区

ALTER TABLE name DROP IF EXISTS PARTITION (PARTITION_SPEC);
--例:删除orders表中2019-10-27的分区
ALTER TABLE olap_engdb.orders DROP IF EXISTS PARTITION (d = '2019-10-27');

交换分区

ALTER TABLE name1 EXCHANGE PARTITION (PARTITION_SPEC) WITH TABLE name2;
--例:将orders表中2019-10-26分区的数据移到临时表
ALTER TABLE olap_engdb.orders EXCHANGE (d = '2019-10-26') WITH tmp_engdb.orders

你可能感兴趣的:(Hive常用操作汇总)