溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Hive分區(qū)表常用語(yǔ)法有哪些

發(fā)布時(shí)間:2021-12-10 09:12:37 來(lái)源:億速云 閱讀:270 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)Hive分區(qū)表常用語(yǔ)法有哪些的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

前言:

如果對(duì)分區(qū)表了如指掌,那么非分區(qū)表的語(yǔ)法就簡(jiǎn)單多了,只需將 PARTITION 相關(guān)字段去掉就可以了。

1. 創(chuàng)建hive分區(qū)表

//不指定LOCATION

CREATE EXTERNAL TABLE 

IF NOT EXISTS hive_partition_01(

ROWKEY STRING,

YEAR INT,

MONTH INT,

DAY INT,

HOUR INT,

MINUTE INT)

PARTITIONED BY (AGE INT) 

ROW FORMAT DELIMITED FIELDS 

TERMINATED BY ','  STORED AS TEXTFILE;    

注:不指定LOCATION,默認(rèn)為/user/hive/warehouse/*.db/table_name

//指定LOCATION

CREATE EXTERNAL TABLE 

IF NOT EXISTS hive_partition_02(

ROWKEY STRING,

YEAR INT,

MONTH INT,

DAY INT,

HOUR INT,

MINUTE INT)

PARTITIONED BY (AGE INT) 

ROW FORMAT DELIMITED FIELDS 

TERMINATED BY ','  

STORED AS TEXTFILE 

LOCATION 'hdfs://master:8020/user/hive/warehouse/hive_hbase.db/hive_partition_01' ;

注:創(chuàng)建指定數(shù)據(jù)路徑的外部分區(qū)表要添加分區(qū)后才能查到數(shù)據(jù),可在hive命令行執(zhí)行修復(fù)命令: msck repair table tablename。 

2. 創(chuàng)建分區(qū)

ALTER TABLE hive_partition_01 ADD PARTITION(AGE= 1998);  

注:創(chuàng)建分區(qū)后 HDFS 增加目錄 age=1998

3. 刪除分區(qū)

ALTER TABLE hive_partition_01 DROP IF EXISTS PARTITION(age =1998);   

注:外部表刪除分區(qū)后HDFS分區(qū)數(shù)據(jù)不會(huì)被刪除

4. 向HIVE表加載數(shù)據(jù)(四種方式)

4.1 從HDFS上導(dǎo)入數(shù)據(jù)到Hive表

//加載某個(gè)目錄下所有數(shù)據(jù),只適合非分區(qū)表

LOAD DATA INPATH '/emp.txt' OVERWRITE INTO TABLE hive_01; 

//INTO 追加寫(xiě)

LOAD DATA INPATH '/emp.txt' INTO TABLE hive_partition_01 PARTITION(AGE=1998);  

注:從HDFS加載數(shù)據(jù),加載后emp.txt文件消失,屬于copy操作

//OVERWRITE INTO 覆蓋寫(xiě)

LOAD DATA INPATH '/emp.txt' OVERWRITE INTO TABLE hive_partition_01 PARTITION(AGE=1998);    

LOAD DATA INPATH '/emp.txt' [OVERWRITE] INTO TABLE hive_partition_01 PARTITION(AGE=1999); 

  

注:執(zhí)行該語(yǔ)句若分區(qū)不存在會(huì)自動(dòng)創(chuàng)建

4.2 從本地文件系統(tǒng)中導(dǎo)入數(shù)據(jù)到Hive表

// INTO 追加寫(xiě)

LOAD DATA LOCAL INPATH '/home/emp.txt' INTO TABLE hive_partition_01 PARTITION(AGE=1999);  

// OVERWRITE INTO 覆蓋寫(xiě) 

LOAD DATA LOCAL INPATH '/home/emp.txt' OVERWRITE INTO TABLE hive_partition_01 PARTITION(AGE=1999);    

4.3 從別的表中查詢(xún)數(shù)據(jù)并導(dǎo)入到Hive表中

// INTO 追加寫(xiě)

insert INTO table hive_partition_01 partition (AGE=1999) select rowkey, year, month ,day , hour , minute from hive_partition_02;

注:hive_partition_02 表 select 的字段必須與 hive_partition_01 表對(duì)應(yīng),此條語(yǔ)句會(huì)執(zhí)行MapReduce任務(wù)

//OVERWRITE 覆蓋寫(xiě)

insert OVERWRITE table hive_partition_01 partition (AGE=1999) select rowkey, year, month ,day , hour , minute from hive_partition_02;

注:HDFS分區(qū)目錄下的文件都會(huì)被覆蓋寫(xiě)

4.4 創(chuàng)建表時(shí)從別的表查詢(xún)數(shù)據(jù)到所創(chuàng)建的表

create table hive_partition_03 as select rowkey, year, month from hive_partition_01;   

注:此條語(yǔ)句會(huì)執(zhí)行MapReduce任務(wù),可select部分字段 

4.5 支持多表插入

from hive_partition_01

    > insert into table hive_partition_02

    > partition(age=1998)

    > select rowkey, year, month ,day , hour , minute

    > insert into table hive_partition_03

    > select rowkey, year, month;

注:向HDFS目錄相同路徑下上傳相同文件,文件名會(huì)添加copy字樣。如下:

/user/hive/warehouse/hive_hbase.db/hive_partition_01/age=1999/emp.txt

/user/hive/warehouse/hive_hbase.db/hive_partition_01/age=1999/emp_copy_1.txt

注:hive 字段不區(qū)分大小寫(xiě)

感謝各位的閱讀!關(guān)于“Hive分區(qū)表常用語(yǔ)法有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI