hive 動態分割槽表

2021-10-01 03:16:29 字數 2891 閱讀 9534

注意:1 並不是都要建輔助表,因為是用load的方式載入資料,所以才要建

2 select 的時候,分割槽欄位要寫在最後面

使用動態分割槽表必須配置的引數 :

//設定為true允許使用dynamic partition

hive.exec.dynamic.partition(預設false)

//設定dynamic partition模式(nostrict允許所有partition列都為dynamic partition,strict不允許)

hive.exec.dynamic.partition.mode(預設strick)

//每乙個mapreduce job允許建立的分割槽的最大數量,如果超過了這個數量就會報錯

hive.exec.max.dynamic.partitions.pernode (預設100):

//乙個dml語句允許建立的所有分割槽的最大數量

hive.exec.max.dynamic.partitions (預設1000):

//所有的mapreduce job允許建立的檔案的最大數量

hive.exec.max.created.files (預設100000):

use test03;

drop table d_fz

set hive.exec.dynamic.partition.mode=nonstrict;

set hive.exec.dynamic.partition=true;

//一級分割槽的動態分割槽表

create table d_patition1(

id bigint,

name string,

interest array)

partitioned by (country varchar(50))

row format delimited fields terminated by '\t'

collection items terminated by ',';

//建立乙個輔助表儲存資料(和動態分割槽表列相同)

create table d_fz(

id bigint,

name string,

interest array,

country string)

row format delimited fields terminated by '\t'

collection items terminated by ','

//由本地檔案插入到臨時表

load data local inpath '/data/log/fenqu5.txt' into table d_fz

//將臨時表的資料 插入到分割槽表中,需 指定分割槽字段 (完全動態分割槽)

insert overwrite table d_patition1 partition(country)

select * from d_fz

//也可以像靜態分割槽一樣,分割槽字段直接寫死

load data local inpath '/data/log/fenqu5.txt' into table d_patition1 partition(country='woman')

//二級分割槽的動態分割槽表

create table d_partition3(

id bigint,

name string,

interest array)

partitioned by (country varchar(50),age int)

row format delimited fields terminated by '\t'

collection items terminated by ',';

//建立乙個輔助表儲存資料(和動態分割槽表列相同)

create table d_fz2(

id bigint,

name string,

interest array,

country string,

age int)

row format delimited fields terminated by '\t'

collection items terminated by ',';

//匯入資料到臨時表

load data local inpath '/data/log/fenqu6.txt' into table d_fz2

//將臨時表的資料 插入到分割槽表中,需 指定分割槽字段 (完全動態分割槽)

insert overwrite table d_partition3 partition(country,age)

select id,name,interest,country,age from d_fz2;

//將臨時表的資料 插入到分割槽表中,(分割槽字段靜態和動態混用,注意select的部分少了靜態分割槽列)

insert overwrite table d_partition3 partition(country='abc',age)

select id,name,interest,age from d_fz2;

也可以像靜態分割槽一樣,分割槽字段直接寫死

load data local inpath '/data/log/fenqu6.txt' into table d_partition3 partition(country='woman',age=11)

指定動態分割槽 hive分割槽表

1.建立分割槽表 create external table if not exists table1 col1 string,col2 string partitioned by state string,country string row format delimited fields ter...

Hive分割槽表,動態分割槽,分桶表

分割槽針對的是資料的儲存路徑 分桶針對的是資料檔案 對已經分好類的檔案匯入靜態分割槽 create table tb p order oid int dt string cost double partitioned by mot string,day string row format delim...

hive 分割槽表

partitioned by create table tb name name string partitioned by age int row format delimited fields terminated by t load data local inpath file path in...