静态分区与动态分区的区别

        静态分区与动态分区的分区字段都是一个表外的虚拟字段,静态分区需要是手动指定分区字段及文件位置(load data );动态分区则是根据指定的字段值自动判断分区,导入数据需要借助一张原始数据表(insert into).

  •     静态分区案例
  • --构建一个用户表
    create table user(
        id int,
        name string,
        sex string,
        age int
    )
    partition by (gender string)
    row format delimited
    fields terminated by '\t';
    
    --静态导入 HDFS上 "/data/user_boy.txt","/data/user_girl.txt" 文件
    load data inpath '/data/user_boy.txt' into table user partition(gender = '男') 
    load data inpath '/data/user_girl.txt' into table user partition(gender = '女') 

  • 动态分区案例
  • --构建一个原始用户表
    create table user_0(
        id int,
        name string,
        sex string,
        age int
    )
    row format delimited
    fields terminated by '\t';
    
    --插入数据
    insert into user_0 value
    (1,'张三','男',10),
    (2,';李四','男',11),
    (3,'王五','女',12),
    (4,'赵六','女',10);
    
    
    -- 设置属性
    set hive.exec.dynamic.partition.mode=nonstrict;   <----非严格模式下可以都是动态分区,而严格模式下必须至少有一个静态分区
    set hive.exec.dynamic.partition=true; 开启动态分区
    
    --构建一个用户表
    create table user(
        id int,
        name string,
        sex string,
        age int
    )
    partition by (gender string)
    row format delimited
    fields terminated by '\t';
    
    --动态导入数据
    insert into  user partition(gender) select *,sex as gender from user_0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值