Hive篇:Hive分区表常用语法汇总
Posted Hbase工作笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive篇: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篇:Hive分区表常用语法汇总的主要内容,如果未能解决你的问题,请参考以下文章