1. 程式人生 > 實用技巧 >hive 建表與 load語法

hive 建表與 load語法

hive 建表語法

內部表:

create table fzname
(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
  • 1
  • 2
  • 3
  • 4
  • 5

外部表:

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';
  • 1
  • 2
  • 3
  • 4
  • 5

分割槽表:

create table fzname
(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
PARTITIONED BY (month string)
STORED AS TEXTFILE;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

資料

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 ...)]
  • 1

例子

匯入到普通表:

LOAD DATA LOCAL INPATH "/home/hadoopUser/data/test1.txt" INTO TABLE test1;
  • 1

匯入到分割槽表:

load data local inpath '/liguodong/dataext' into table test1 partition(dt='20150717');
  • 1
  • LOCAL

    • 指定local,表示從本地檔案系統載入(檔案會被拷貝到HDFS中)
    • 不指定local,表示從HDFS中載入資料
  • OVERWRITE 表示是否覆蓋表中資料