分区表与分桶表

前言:在大数据中,最常用的一种思想就是分治,我们可以把大的文件切割划分成一个个的小的文件,这样每次操作一个小的文件就会很容易

在 hive 当中也是支持这种思想的,就是我们可以把大的数据,按照每天,或者每小时进行切分成一个个的小的文件,这样去操作小的文件就会容易

1.使用:基本语法:

create table tablename(...) partitioned by ( 分区列 列类型 , ......) row format delimited fields terminated by '';

例如;create table myhive.score(id int ,cid string,score int) partitioned by (mouth string) row format delimited fields terminated by '\t';

查看:hdfs,发现目前是空的

加入数据:

命令:load data local inpath '/home/wtk/score.txt' into table myhive.score partition(mouth='241025');

几个分区就有几个文件夹

3.查看分区:show partitions score

4.创建表以后的修改:

5.分桶表:

分桶和分区一样,也是一种通过改变表的存储模式,从而完成对表优化的一种调优方式

但和分区不同,分区是将表拆分到不同的子文件夹中进行存储,而分桶是将表拆分到固定数量的不同文件中进行存储

一:创建:开启分桶的自动优化(自动匹配 reduce task 数量和桶数量一致)

命令:set hive.enforce.bucketing=true;

创建分桶表

create table course (c_id string,c_name string,t_id string) clustered by(c_id)

into 3 buckets row format delimited fields terminated by '\t';

桶表的数据加载,由于桶表的数据加载通过 load data 无法执行,只能通过 insert select.

看吧,不能load data 直接导入到表,此时可以新建表

新建临时表

插入数据到目标

命令: insert overwrite table course select * from course_son cluster by(c_id);

问题:为什么不可以用 load data ,必须用 insert select 插入数据

总的来说分桶表不能被计算计算过程,MapReduce一直在用,而load data 只是单纯导入文件数据

一旦有了分桶设置,比如分桶数量为 3 ,那么,表内文件或分区内数据文件的数量就限定为 3
当数据插入的时候,需要一分为 3 ,进入三个桶文件内。

Hash 取模:

Hash 算法是一种数据加密算法,同样的值被 Hash 加密后的结果是一致的

性能提升:

如果说分区表的性能提升是:在指定分区列的前提下,减少被操作的数据量,从而提升性能。分桶表的性能提升就是:基于分桶列的特定操作,如:过滤、 JOIN 、分组,均可带来性能提升。

分区和分桶可以同时使用

相关推荐
xiaopai9452 分钟前
WPS能否替代工程项目管理系统
大数据·数据库·项目管理系统·建米软件
北京晶数信息科技6 分钟前
成品油交易即开票原创一体化解决方案汇报(二)
大数据·人工智能·物联网·产品经理·需求分析
HAYDENR1 小时前
依赖数据迁移工具做增量同步有哪些易错点?调整数据迁移工具策略怎么保证断点续传可靠?
java·大数据·数据库
中电金信1 小时前
中电金信 :一站式企业智能体柔性生产全链路解决方案
大数据·人工智能
Jlzn88881 小时前
轻量化与高可靠性的平衡之道:CCS集成母排产线关键工艺解析
大数据·网络·物联网
观远数据1 小时前
跨部门BI落地的核心:如何做好数据集权限治理消除数据孤岛
大数据·人工智能
碧口科技1 小时前
合规打底 价值锚定:博彦科技FDE模式打通金融AI境内外规模化落地路径
大数据
天行健,君子而铎1 小时前
场景化适配+合规审查+技术突破:运营商AI数据分类分级最优解决方案
大数据·安全
leisoo809710 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
AI产品测评官10 小时前
突破系统割裂困局:2026企业级AI招聘架构如何迈向“原生全流程”?
大数据·微服务·架构