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