Hive常用修改命令

2021-10-06 20:01:29 字數 4466 閱讀 8134

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 ...])

rename to… 語句

alter table table_name rename to new_table_name;
上面這個命令可以重新命名表,資料所在的位置改變,但分割槽名都沒有改變。

下面是查詢重新命名表,把 employee 修改為 emp。

alter table employee rename to emp;
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表的字段,它顯示的字段要被更改(粗體)。

欄位名從資料型別轉換

更改欄位名稱

轉換為資料型別

eidint

eidint

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;

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);
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來獲取這些資訊。

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, ...)。

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;

上面兩個命令都修改了表的物理屬性。

1)修改分割槽名

alter table table_name partition(dt='partition_old_name') rename to partition(dt='partition_new_name')

2)修改分割槽屬性

alter table table_name partition column (dt partition_new_type)

3)修改分割槽位置

alter table table_name partition (createtime='20190301') set location "new_location"

4)新增分割槽

alter table table_name add partition (partition_name = 'value') location '***'

--示例

alter table table_name add if not exists partition (createtime='20190301') location '/user/hive/warehouse/testdw/js_nk_wn'

--還可以同時新增多個分割槽,只需要在後面繼續追加就行

alter table table_name add partition (createtime='20190301') location '/user/hive/warehouse/dept_part' partition (createtime='20190228') location '/user/hive/warehouse/dept_part'

5)刪除分割槽

--刪除一級分割槽

alter table table_name drop if exists partition(createtime='20190301')

--刪除二級分割槽

alter table table_name drop if exists partition (month='02',day='12')

6)修改表的位元組編碼

alter table table_name set serdeproperties ('serialization.encoding'='utf-8');

Hive常用shell命令

1 建立資料庫 create database zy test 2 顯示所有資料庫 show databases 3 使用某資料庫 use sgs test 4 顯示所有表 show tables 5 建立表 create table zy test name string 6 描述表 desc s...

Hive常用操作命令

建立資料庫 create database db name create database if not exists db name 建立乙個不存在的資料庫final 檢視資料庫 show databases 選擇性檢視資料庫 show databases like f.檢視某乙個資料庫的詳細資訊...

hive常用命令

進入hive目錄後執行hive命令進入命令模式 建立新錶 hive create table t hive a int,b int,c int row format delimited fields terminated by t 匯入資料t hive.txt到t hive表 hive load d...