hive 建表與 load語法
阿新 • • 發佈:2019-02-19
hive 建表語法
內部表:
create table fzname
(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
外部表:
create external table fz_external_name(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
location '/home/sendi/test.txt' ;
分割槽表:
create table fzname
(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
PARTITIONED BY (month string)
STORED AS TEXTFILE;
資料
123,aa,2,0,hangzhou
245,bb,3,1,beijing
789,cc,2,0,shanghai
201,dd,3,1,guangzhou
指定表中行資料資訊
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ LINES TERMINATED BY ‘\n’
* ROW FORMAT
* TERMINATED BY ‘\t’ 每行資料中欄位的分隔符
* LINES TERMINATED BY ‘\n’ 行的分隔符,不指定的時候預設為‘\n’
儲存格式
- STORED AS
- TEXTFILE 使用純文字儲存。
- SEQUENCEFILE 對檔案進行壓縮儲存。
分割槽
- PARTITIONED :表示的是分割槽,不同的分割槽會以資料夾的形式存在
外部表
- EXTERNAL 關鍵字可以讓使用者建立一個外部表,在建表的同時指定一個指向實際資料的路徑(LOCATION),Hive 建立內部表時,會將資料移動到資料倉庫指向的路徑;若建立外部表,僅記錄資料所在的路徑,不對資料的位置做任何改變。在刪除表的時候,內部表的元資料和數 據會被一起刪除,而外部表只刪除元資料,不刪除資料。
LOAD 語法
Hive不支援一條一條的用insert語句進行插入操作,也不支援update的操作。資料是以從其他表查詢或load的方式,載入到建立好的表中。資料一旦匯入,則不可修改。
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1,partcol2=val2 ...)]
例子
匯入到普通表:
LOAD DATA LOCAL INPATH "/home/hadoopUser/data/test1.txt" INTO TABLE test1;
匯入到分割槽表:
load data local inpath '/liguodong/dataext' into table test1 partition(dt='20150717');
LOCAL
- 指定local,表示從本地檔案系統載入(檔案會被拷貝到HDFS中)
- 不指定local,表示從HDFS中載入資料
OVERWRITE 表示是否覆蓋表中資料