2021-04-07

本文探讨了Hive中的静态分区与动态分区的区别,包括创建方法、加载数据、操作方式和适用场景。静态分区适用于已知数据分布,动态分区则适合未知或频繁变化的数据。讲解了如何设置动态分区并举例演示操作过程及注意事项。
摘要由CSDN通过智能技术生成
            hive中的分区

hive在的分区有两种:
1.静态分区
2.动态分区
两者的主要思想是相同的,这是做一件事情的两种方法
创建静态分区表:
create table if not exists dept (col1 int,col2 string,col3 string,col4 int) row format delimited fields terminated by’,’ lines terminated by’\n’stored as textfile;
Partitioned table
create table if not exists part_dept (deptno int,empname string,sal int) partitioned by (deptname string) row format delimited fields terminated by’,’ lines terminated by’\n’stored as textfile;
Static partitioning Load
insert into table part_dept partition (deptname = ‘HR’) select col1,col3,col4 from dept where col2 = ‘HR’; load data local inpath’/home/jivesh/act’into table part_tab partition( deptname =‘XZ’);

动态分区:
默认情况下,Hive中禁用动态分区,因此,首先需要在hive中使动态有效
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

现在创建动态表:
create table if not exists part_dept1 (deptno int,empname string,sal int) partitioned by (deptname string) row format delimited fields terminated by’,’ lines terminated by’\n’stored as textfile;

Dynamic partitioning Load
insert into table part_dept1 partition (deptname) select col1,col3,col4,col2 from dept;
删除分区:
drop partitionalter table part_dept1 drop partition (deptname = ‘HR’);

添加分区:

alter table part_dept1 add partition (deptname = ‘Dev’);

load data local inpath’/home/jivesh/dev’into table part_dept1 partition( deptname =‘Dev’);

msck repair table part_dept1;
静态与动态的区别:
在静态中,需要事先掌握数据知识。因此,如果事先掌握数据知识,那么我们可以使用静态分区。但是在静态分区中,我们手动进行分区。因此,如果数据较少,那么静态分区较好。
但是如果我们事先并没有数据知识,并且拥有更多唯一数据,则动态分区比静态分区更适合

在表的内部,我们创建了许多目录。如果我直接在HDFS中再创建一个目录,则hive会辨别它是否是分区
默认情况下,hive将这个目录视为分区。
我们可以通过两种方式推动hive对其的识别
1.添加分区
2.通过使用msck repair命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值