实质上:分区是指物理上对hdfs不同目录进行数据的load操作
一、例子。现在创建一个分区表
CREATE TABLE device_open (
deviceid varchar(50),
...
)
PARTITIONED BY (year varchar(50),month varchar(50),day varchar(50),hour varchar(50))
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
二、动态插入数据
动态插入就是指插入的数据不是直接从一张表中拿出来的,而是从一张表中查询出来的,在插入的时候自己也不知道插入的具体数据是啥。 静态插入就是插入的时候插入的是已知的数据
现在对创建的这张表进行动态插入数据。在这之前需要设置 两个 参数:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
扩展其他可以设置的选项:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
SET hive.exec.max.dynamic.partitions=100000;
SET hive.exec.max.dynamic.partitions.pernode=100000;
然后进行插入
insert overwrite table device_open partition(year,month,day,hour)
select
...,
original_device_open.year as year,
original_device_open.month as month,
original_device_open.day as day,
original_device_open.hour as hour
FROM original_device_open
|