1. 程式人生 > 實用技巧 >Hive的基本操作

Hive的基本操作

1、強制刪除資料庫: 

通常情況下資料庫中有表是不能刪除的,強制刪除資料庫使用“cascade”。如強制刪除資料庫“test”
drop database test cascade;

2、建立表指定分隔符,不指定分隔符預設是TextFile格式,輸出時欄位內容會挨著。

cmissh@hn0-stg02:~$ hdfs dfs -cat wasb://[email protected]/hive/warehouse/rx801.db/test/000000_0
zhangsan10

建立表時指定分隔符,如使用 , 作為分隔符,使用 row format delimited fields terminated by ',';
例:建立test表: create table test (name string,age int,address string) row format delimited fields terminated by ','; insert into test values ('zhangsan',25,'beijing') 通過show create table test; 可以看到檔案存放的位置,wasb://[email protected]/hive/warehouse/rx801.db/test
插入操作都以檔案的形式記錄在Blob中。

檢視檔案
hdfs dfs -ls wasb://[email protected]/hive/warehouse/rx801.db/test
將會顯示:wasb://[email protected]/hive/warehouse/rx801.db/test/000000_0
通過檢視可以看到是以分隔符 , 進行分割的。
cmissh@hn0-stg02:~$ hdfs dfs -cat wasb://[email protected]/hive/warehouse/rx801.db/test/000000_0
zhangsan,25,beijing

 3、表中新增欄位。

表中新增欄位使用:alter table 表名 add columns(新欄位 欄位型別);
例:test表中新增一個string型別的tel欄位。 hive> alter table test add columns(tel string); OK Time taken: 0.312 seconds hive> desc test; OK name string age int address string tel string Time taken: 0.185 seconds, Fetched: 4 row(s)

4、表中修改欄位和欄位位置移動

修改欄位名使用:Alter table 表名 change column 原欄位名稱 現欄位名稱 資料型別;
例:將test表中的tel修改為int型別 hive> alter table test change column tel tel int; OK Time taken: 0.467 seconds hive> desc test; OK name string age int address string tel int Time taken: 0.23 seconds, Fetched: 4 row(s)

更改欄位的位置使用:Alter table 表名 change column 原欄位名稱 現欄位名稱 資料型別 after 欄位名;

例:將test表中的tel欄位移動到name欄位後面。
hive> alter table test change column tel tel int after name;
OK
Time taken: 0.467 seconds
hive> desc test;
OK
name                    string
tel             int age int address string Time taken: 0.255 seconds, Fetched: 4 row(s)

 5、表中刪除欄位

Hive中不支援使用 alter table 表名 drop columns 這種語法,支援replace
語法為:alter table 表名 replace columns(列名1 型別,列名2 型別,列名3 型別....);
replace的使用是保留括號中的列

例:刪除test表中的tel列。
hive> alter table test replace columns(name string,age int,address string);
OK
Time taken: 0.303 seconds
hive> desc test;
OK
name                    string
age                     int
address                 string
Time taken: 0.179 seconds, Fetched: 3 row(s)