— 1 创建分区表

create table username.test_par(
cust_no           string
)partitioned by(province_code string comment "按网省分区" ,YM string comment "按年月分区")
row format delimited fields terminated by ',';

备注 该表中以province_code和ym作为分区

– 2 向分区表中插入数据

insert into username.test_par PARTITION(province_code='61',
                                      YM='202106'
)
select '000' as cust_no;

备注:分区中province_code取值为’61’,ym取值为’202106’

– 3 向分区表中插入参数

insert into username.test_par PARTITION(province_code='${hiveconf:param_province}',
           YM='${hiveconf:param_ym}'
)
select '000' as cust_no;

--- 执行hql文件
beeline -u "jdbc:hive2://ip:端口" -n dsjb_qwbqk_csq  -hiveconf param_province='61'  -hiveconf param_ym='202107' -f test-par.hql

test-par.hql .hql文件中的内容为:

insert into username.test_par PARTITION(province_code='${hiveconf:param_province}',
           YM='${hiveconf:param_ym}'
)
select '000' as cust_no;

备注:insert overwrite是删除原有数据然后在新增数据,如果有分区那么只会删除指定分区数据,其他分区数据不受影响

4 给分区表创建分区

alter table table_name add partition (province_code='61',ym = '202106');

5 分区插入数据说明

向分区中插入 与年月相关的参数时,在sql语句中运算时,参数需要加上单引号,否则无法进行运算

-- 把指定字符串转时间 -年月,再进行运算,运算结束后再转回字符串年月
select substr(regexp_replace(string(add_months(from_unixtime(unix_timestamp('${param_ym'}, 'yyyyMM'),'yyyy-MM-dd'),-2)),"-",""),1,6)
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐