Hive Hive中修改表常用的一些指令

2021-08-20 00:04:45 字數 3292 閱讀 4791

修改已經存在的表:

alter table

alter table 語句允許使用者改變現有表的結構。使用者可以增加列/分割槽,表本身重新命名。

1) 增加分割槽 add partitions:

alter table table_name add partition_spec [ location 'location1']partition_spec [ location 'location2' ]

其中partition_spec的格式為:partition (partition_col =partition_col_value, partition_col =partiton_col_value, ...)

使用者可以用 alter table add partition 來向乙個表中增加分割槽。當分割槽名是字串時加引號。

alter table test_partition add partition (dt='2012-03-06')location'/home/zhangxin/hive/test_hive.txt';

2) 刪除分割槽 drop partition:

alter table table_name drop partition_spec, partition_spec,...

使用者可以用 alter table drop partition 來刪除分割槽。分割槽的元資料和資料將被一併刪除。

alter table test_partition drop partition (dt='2012-03-06')

3) 對錶進行重新命名 rename to:

alter table table_name rename to new_table_name

這個命令可以讓使用者為表更名。資料所在的位置和分割槽名並不改變。換而言之,老的表名並未「釋放」,對老表的更改會改變新錶的資料。

alter table test_partition rename to new_test_partition;

4) 對錶中的某一列進行修改,包括列的名稱/列的資料型別/列的位置/列的注釋

alter table table_name change [column] col_old_name col_new_namecolumn_type[comment col_comment] [first|after column_name]

這個命令可以允許使用者修改乙個列的名稱、資料型別、注釋或者位置

create table test_col_change (a int,b int, c int);

修改列的名稱,後面一定要加上資料型別:

alter table test_col_change change a a1 int; 將 a 列的名字改為 a1.

alter table test_col_change change a a1 string after b; 將 a 列的名字改為 a1,a 列的資料型別改為string,並將它放置在列 b 之後。新的表結構為: b int, a1 string, c int.

alter table test_col_change change b b1 int first; 會將 b 列的名字修改為b1, 並將它放在第一列。新錶的結構為: b1 int, a string, c int.

注意:對列的改變只會修改hive 的元資料,而不會改變實際資料。使用者應該確定保證元資料定義和實際資料結構的一致性。

5) 新增/替換列add/replacecolumns

alter table table_name add|replace columns (col_name data_type [commentcol_comment],...)

add columns 允許使用者在當前列的末尾增加新的列,但是在分割槽列之前。

alter table test_col_change add columns (d int);

describe test_col_change;

oka1 int 

b1 string 

c int 

d int 

replace columns 刪除以後的列,加入新的列。只有在使用 native 的serde(dynamicserdeormetadatatypecolumnsetserde)的時候才可以這麼做。

alter table test_col_change replace columns (c int);

describetest_col_change; 

okc int 

6) 修改表的屬性alter table properties:

alter table table_name set tblproperties table_properties 

table_properties: : (property_name = property_value, property_name=property_value, ... )

用 戶可以用這個命令向表中增加metadata,目前last_modified_user,last_modified_time屬性都是由 hive 自動管理的。使用者可以向列表中增加自己的屬性。可以使用 describe extended table 來獲得這些資訊。

alter table test_col_change set tblproperties ('key1'='value1');

可以通過 describe extended test_col_change; 檢視表的屬性資訊。

7) 修改表的序列化和反序列化屬性:

alter table table_name set serde serde_class_name [withserdepropertiesserde_properties]

alter table table_name set serdeproperties serde_properties

serde_properties: : (property_name = property_value, property_name=property_value, ... )

這個命令允許使用者向 serde 物件增加使用者定義的元資料。hive 為了序列化和反序列化資料,將會初始化 serde 屬性,並將屬性傳給表的serde。如此,使用者可以為自定義的 serde 儲存屬性。

8) 修改表的檔案儲存格式組織方式:

alter table table_name set fileformat file_format

alter table table_name clustered by (col_name, col_name, ...) [sortedby(col_name, ...)] into num_buckets buckets

這個命令修改了表的物理儲存屬性。

hive hive中建立表

一 建立表語句 create table if not exists mydb.employees name string comment employee name salary float subordinates arraydeductions mapaddress struct commen...

Hive hive表中的資料匯出

insert overwrite local directory export servers exporthive a select from score insert overwrite local directory export servers exporthive row format d...

Hive Hive的常用運算和函式

hive支援的關係運算子 hive數 算 注意 hive 中最高精度的資料型別是 double,只精確到小數點後 16 位,在做除法運算的時候要 特別注意 hive select ceil 28.0 6.999999999999999999999 from dual limit 1 結果為4 hiv...