Hive簡易教程 - 資料儲存

weixin_33912445發表於2017-05-16

hive是hdfs上的資料倉儲,能夠將一個個大檔案有效地管理起來,並對其進行統計分析。資料倉儲看待資料的方式與常見的資料庫是完全不同的,它的最小粒度是檔案而不是單條資料。hive一般在hdfs上的路徑為/user/hive/warehouse,而hive中的資料庫(如demo)的路徑就是/user/hive/warehouse/demo.db,在往下就是表的路徑如:/user/hive/warehouse/demo.db/test。管理hive上的資料分為兩部分:定義資料以及操縱資料。

基本命令

切換資料庫:use 資料庫名;
顯示當前資料庫中的所有變:show tables;
檢視錶結構:desc 表名;
檢視建表語句:show create table 表名;
資料定義語句(DDL)

建立表

完整語句

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later)
[(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[SKEWED BY (col_name, col_name, ...) -- (Note: Available in Hive 0.10.0 and later)]
ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
[STORED AS DIRECTORIES]
[
[ROW FORMAT row_format]
[STORED AS file_format]
| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)] -- (Note: Available in Hive 0.6.0 and later)
]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)] -- (Note: Available in Hive 0.6.0 and later)
[AS select_statement]; -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)

  1. hive可以建立臨時表[temporary],臨時表在當前會話結束時(如關閉hive客戶端)會被自動刪除。
  2. hive可以外部的對映表[external],即hive並不將這些資料儲存在自己的hdfs路徑中,而只儲存表的後設資料。這樣hive便可訪問更多的資料來源,如hbase。
  3. hive可以直接將select語句的結果儲存為一個表:create table t2 as select * from t1;
  4. hive的基本單元是檔案,那麼在建立表的時候可以指定檔案中每行資料的分隔符,即按該分割符分割後即為表的各列:create table t(c1 string, c2 string) row format delimited fields terminated by '\t'。
  5. hive中的表就是hdfs上的一個路徑,在建立表時可以在其下繼續建立檔案目錄,這樣的好處就是在查詢時可以只訪問一些指定的目錄來提高效能。create table t1(id string) partitioned by (year string, month string),這樣t1路徑下就是year的資料夾,而year的每個值路徑下還有month資料夾,如圖所示:
281180-6b716d7b75078f3b.png
Paste_Image.png

修改表

表重新命名:alter table 原表名 rename to 新表名
刪除分割槽:alter table xx drop partition (xx='')
資料操縱語言(DML)

載入資料

1)從本地載入: load data local inpath 'data/t1' into table t1;
2)從HDFS轉移:load data inpath '/user/hive/project/data1' into table xxx;

相關文章