您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(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ò),可以把它分享出去讓更多的人看到吧!
免責(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)容。