這篇文章給大家分享的是有關Hive分區表常用語法有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
前言:
如果對分區表了如指掌,那么非分區表的語法就簡單多了,只需將 PARTITION 相關字段去掉就可以了。
1. 創建hive分區表
//不指定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,默認為/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' ;
注:創建指定數據路徑的外部分區表要添加分區后才能查到數據,可在hive命令行執行修復命令: msck repair table tablename。
2. 創建分區
ALTER TABLE hive_partition_01 ADD PARTITION(AGE= 1998);
注:創建分區后 HDFS 增加目錄 age=1998
3. 刪除分區
ALTER TABLE hive_partition_01 DROP IF EXISTS PARTITION(age =1998);
注:外部表刪除分區后HDFS分區數據不會被刪除
4. 向HIVE表加載數據(四種方式)
4.1 從HDFS上導入數據到Hive表
//加載某個目錄下所有數據,只適合非分區表
LOAD DATA INPATH '/emp.txt' OVERWRITE INTO TABLE hive_01;
//INTO 追加寫
LOAD DATA INPATH '/emp.txt' INTO TABLE hive_partition_01 PARTITION(AGE=1998);
注:從HDFS加載數據,加載后emp.txt文件消失,屬于copy操作
//OVERWRITE INTO 覆蓋寫
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);
注:執行該語句若分區不存在會自動創建
4.2 從本地文件系統中導入數據到Hive表
// INTO 追加寫
LOAD DATA LOCAL INPATH '/home/emp.txt' INTO TABLE hive_partition_01 PARTITION(AGE=1999);
// OVERWRITE INTO 覆蓋寫
LOAD DATA LOCAL INPATH '/home/emp.txt' OVERWRITE INTO TABLE hive_partition_01 PARTITION(AGE=1999);
4.3 從別的表中查詢數據并導入到Hive表中
// INTO 追加寫
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 表對應,此條語句會執行MapReduce任務
//OVERWRITE 覆蓋寫
insert OVERWRITE table hive_partition_01 partition (AGE=1999) select rowkey, year, month ,day , hour , minute from hive_partition_02;
注:HDFS分區目錄下的文件都會被覆蓋寫
4.4 創建表時從別的表查詢數據到所創建的表
create table hive_partition_03 as select rowkey, year, month from hive_partition_01;
注:此條語句會執行MapReduce任務,可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目錄相同路徑下上傳相同文件,文件名會添加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 字段不區分大小寫
感謝各位的閱讀!關于“Hive分區表常用語法有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。