Hive 数仓工具(4) 动态分区 分桶表 排序(分区,分桶) case when if show functions with 语法 集合数据类型 窗口函数 案例

本文详细介绍了Hive中动态分区、分桶表的概念和操作,包括如何创建动态分区表、导入数据,以及如何创建和使用分桶表。还涉及到了Hive的排序、分桶优化、CASE WHEN语句、窗口函数等高级功能的用法,旨在帮助读者深入理解Hive的数据管理与查询技巧。
摘要由CSDN通过智能技术生成

动态分区
按照某个字段的值的内容将数据分文件夹管理 方便按照这个维度查询

1数据 2建表 3导入数据 4创建分区表 5开始动态设置 6向动态分区表中导入数据
0数据
cd /hive/data
vi user.txt
u001 zss 23 M beijiing
u002 yhh 23 M nanjing
u003 lss 43 M beijiing
u004 zy 23 M beijiing
u005 zm 23 M beijiing
u006 cl 23 M dongjing
u007 lx 23 M beijiing
u008 yz 23 M beijiing
u009 ym 23 M nanjiing
u010 xm 23 M beijiing
u011 xd 23 M beijiing
u012 lh 23 M dongjiing
u013 ftm 23 M dongjiing

1创建一个普通表 导入数据方式
create table if not exists tb_user(
uid string,
name string,
age int,
gender string,
address string
)
row format delimited fields terminated by " ";

load data local inpath “/hive/data/user.txt” into table tb_user;

2创建分区表
create table if not exists tb_p_user(
uid string,
name string,
age int,
gender string,
address string
)
partitioned by (addr string)
row format delimited fields terminated by " ";

3开启动态分区功能
set 参数=值;
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrick; 可以从普通表导入数据

4动态导入数据
普通表5个字段
分区表 5个主字段 1个分区字段
插入数据的时候字段个数类型一致 最后一个字段就是分区字段
insert into tb_p_user partition(addr)
select uid, name, age, gender, address, address from tb_user;

分桶表 方便运算,提高效率
clustered by(uid) into num buckes -分桶语法
分桶表 将数据分文件存储,类似于分区
cd /hive/data
vi cluster.txt
uid name
1001 ss1
1002 ss2
1003 ls1
1004 ks1
1005 ps1
1006 hhh
1007 ss10
1008 ss11
1009 ss12
1010 ss13
1011 ss14
1012 ss15
1013 ss16
1014 ss9
1015 ss8
1016 ss7
1017 ss6
1018 ss5

1创建分桶表
create table if not exists tb_cluster(
uid int,
name string
)
clustered by (uid) into 4 buckets
row format delimited fields terminated by “\t”;
desc formatted tb_cluster;

2创建普通表 导入到普通表中
create table if not exists tb_cluster2(
uid int,
name string
)
row format delimited fields terminated by “\t”;
load data local inpath “/hive/data/cluster.txt” into table tb_cluster2;

3开启分桶
set hive.enforce.bucketing=true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值