1. 程式人生 > >hive 基本命令

hive 基本命令

1. 建立

create: 建立資料庫、表、檢視

初級:create [database/table/view/schema] name;   在sql引擎內,均可用schema代替database

高階:create database if not exists name with dbproperties('creator'='binbin','date'='2018-11-15') ;  建立資料庫時給庫新增其屬性欄位;也可在後面加 location '路徑'  指定儲存位置,如果未指定的話其會存在資料庫所在的目錄位於屬hive.metasotre.warehouse.dir 所指定的頂層目錄之後;可以用

desc database extended name 

檢視資料庫的屬性:即儲存位置,編輯資訊等。注意,除 dbproperties屬性外,資料庫的元資料資訊都是不可更改的,包括資料庫名和資料庫所在的目錄位置,沒有辦法刪除或重置資料庫屬性

create database if not exists hive with dbproperties('creator'='binbin');
use hive;
create table if not exists usr(id bigint,name string,age int);
create view little_usr as select id,age from usr;

BTW:建立表時,未指定分隔符的時候,其預設分隔符為ascii碼的控制符\001,到時候load資料操作起來有點麻煩,所以最好在建立表時就把分隔符指定了.我在下面指定的分隔符是空格,你在準備資料檔案的時候以空格分割即可。不過一般最後以製表符‘/t’來作為分隔符。

drop table usr;
create table if not exists usr(id bigint,name string,age int)row format delimited fields terminated by ' ';
load data local inpath '/home/binbin/Documents' overwrite into table usr;
hive> select * from usr;
OK
16521	'zhangsan'	20
16522	'lisi;	20
16523	'wangwu'	22

在hive資料庫中建立外部表usr1,可以讀取路徑/usr/local/data下以“,”分隔的資料,還存在分割槽欄位sex

create external table if not exists hive.usr1(id bigint,name string,age int) partitioned by(sex boolean) row format delimited fields terminated by ',' location '/usr/local/data';

2.增

把本地資料檔案匯入到hive資料庫裡面,請見上一塊程式碼。加了local就是本地檔案系統的資料檔案。如果沒有加的話就是你的路徑就得是hdfs檔案系統中的檔案。注意分隔符。overwrite關鍵字是覆蓋關鍵詞,沒有這個關鍵詞的話它就自動append

3.刪

drop 【database\table\schema\view】if exists name

注意刪除資料庫的時候,如果其中有表的話記得加關鍵詞cascade,他會把資料庫和裡面的表一起刪除,如果不加的話,外部表只會刪除表名,表的資料還在,以後可以重建這個表,只要建立的時候location到資料目錄即可,然後通過msck repair table table_name命令重新整理資料的元資訊到hive中,ps:若是分割槽被刪除也能通過這個語句恢復

3.1 表刪除分割槽欄位

ALTER TABLE my_partition_test_table DROP IF EXISTS PARTITION (p_loctype='MHA');

4.查

4.1檢視資料庫,表,檢視名

show 【databases\tables\schemas\views】 name

4.2檢視資料庫,表,檢視結構

4.3describe/desc 【database\table\schema\view】name

查看錶中資料

select * from table_name;

查看錶型別

desc extended table_name

可以查看錶是否是管理表或外部表;[如果輸出中有 tableType:MANAGED_TALBE表明是託管表,tableType:EXTERNAL_TALBE 外部表]

5.改

5.1 改資料庫編輯屬性

alter database name set dbproperties(‘edited-by’=’binbin’);

5.2 分割槽表新增分割槽欄位

alter table my_partition_test_table if not exists add partition (p_hour='2017113003', p_city='573', p_loctype='MHA');

 

 

PS:分割槽理解:https://www.cnblogs.com/kouryoushine/p/7801924.html