分桶的概述

为什么要分桶

  • 数据分区可能导致有些分区数据过多,有些分区数据极少。分桶是将数据集分解为若干部分(数据文件)的另一种技术。
  • 分区和分桶其实都是对数据更细粒度的管理。当单个分区或者表中的数据越来越大,分区不能细粒度的划分数据时,我们就采用分桶技术将数据更细粒度的划分和管理
  • [CLUSTERED BY (col_name, col_name, …)

分桶的原理

与MapReduce中的HashPartitioner的原理一模一样

  • MapReduce:使用key的hash值对reduce的数量进行取模(取余)
  • hive:使用分桶字段的hash值对分桶的数量进行取模(取余)。针对某一列进行分桶存储。每一条记录都是通过分桶字段的值的hash对分桶个数取余,然后确定放入哪个桶。

分桶的意义

  1. 为了保存分桶查询的分桶结构(数据已经按照分桶字段进行了hash散列)
  2. 分桶表适合进行数据抽样
    抽样更高效。处理大数据时,如果能在数据集的一部分上运行查询进行测试会带来很多方便
  3. join操作时可以提高MR的查询效率
    连接查询两个在相同列上划分了桶的表,可以在map端进行高效的连接操作。 比如join操作。对于两个表都有一个相同的列,如果对两个表都进行桶操作,那么hive底层会对相同列值的桶进行join操作。效率很高

分桶表创建

案例

第一步:建表

drop table student;
create table student(
sno int,
name string,
sex string,
age int,
academy string
)
clustered by (sno) sorted by (age desc) into 4 buckets
row format delimited
fields terminated by ','
;#分桶字段和排序字段可以不一致

第二步:加载数据

load data local inpath 'students.txt' into table student;

注意事项

2版本开始,设置了强制分桶操作,因此人为的修改reduce的个数不会影响最终文件的个数(文件个数由桶数决定)

如果是低版本,比如1.2.1版本可以修改下面的属性

1. 需要设置reduce数量和分桶数量相同:
set mapreduce.job.reduces=4;
2.如果数据量比较大,我们可以使用MR的本地模式:
set hive.exec.mode.local.auto=true;
3.强行分桶设置:set hive.enforce.bucketing=true; 默认是false
4.强行排序设置:set hive.enforce.sorting=true;

分桶表查询

语法:

语法:tablesample(bucket x out of y on sno)
x:代表从第几桶开始查询,x不能大于y2.1.1版本的y:代表查询的总的桶数 y值可以自定义。
低版本,比如1.2.1的y必须是表的桶数的因子或者是倍数。

查询全部

select * from student;
select * from student tablesample(bucket 1 out of 1);

指定桶查询

查询第一桶select * from student tablesample(bucket 1 out of 4 on sno);
查询第一桶和第三桶select * from student tablesample(bucket 1 out of 2 on sno);
查询第二桶和第四桶的数据select * from student tablesample(bucket 2 out of 2 on sno);
查询对8取余的第一桶的数据:select * from student tablesample(bucket 1 out of 8 on sno);

其他查询

查询三行数据select * from student limit 3;select * from student tablesample(3 rows);
查询百分比的数据select * from student tablesample(13 percent);大小的百分比所占的那一行。查询固定大小的数据select * from student tablesample(68b); 单位(K,KB,MB,GB...)固定大小所占的那一行。
随机抽三行数据select * from student order by rand() limit 3;

全方位揭秘!大数据从0到1的完美落地之Hive分桶相关推荐

  1. 全方位揭秘!大数据从0到1的完美落地之Hive自定义函数

    自定义函数 自定义函数介绍 hive的内置函数满足不了所有的业务需求.hive提供很多的模块可以自定义功能,比如:自定义函数.serde.输入输出格式等.而自定义函数可以分为以下三类: 1)UDF:u ...

  2. 全方位揭秘!大数据从0到1的完美落地之Hive介绍

    Hive定义 Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成一张数据表,并可以使用类似SQL的方式来对数据文件进行读写以及管理.这套Hive SQL 简称HQL.Hive的 ...

  3. 全方位揭秘!大数据从0到1的完美落地之Hive企业级调优

    Hive企业级调优 调优原则已经在MR优化阶段已经有核心描述,优化Hive可以按照MR的优化思路来执行 优化的主要考虑方面: 环境方面:服务器的配置.容器的配置.环境搭建 具体软件配置参数: 代码级别 ...

  4. 全方位揭秘!大数据从0到1的完美落地之Hive窗口函数

    窗口函数 窗口函数over简介 先来看一下这个需求:求每个部门的员工信息以及部门的平均工资.在mysql中如何实现呢 求部门平均工资 select deptno ,avg(sal) from emp ...

  5. 全方位揭秘!大数据从0到1的完美落地之Hive分区

    分区简介 为什么分区 Hive的Select查询时,一般会扫描整个表内容.随着系统运行的时间越来越长,表的数据量越来越大,而hive查询做全表扫描,会消耗很多时间,降低效率.而有时候,我们需求的数据只 ...

  6. 全方位揭秘!大数据从0到1的完美落地之Hive存储格式

    hive的存储格式 hive的存储格式分为两大类:一类纯文本文件,一类是二进制文件存储. 第一类: 纯文本文件存储 textfile: 纯文本文件存储格式,不压缩,也是hive的默认存储格式,磁盘开销 ...

  7. 全方位揭秘!大数据从0到1的完美落地之Hive查询操作

    Hive基本查询语法 基本使用规则 基本查询语句组成 select .. from ..join [tableName] on ..where ..group by ..having ..order ...

  8. 全方位揭秘!大数据从0到1的完美落地之Hive压缩

    Hive的压缩 HQL语句最终会被编译成Hadoop的Mapreduce job,因此hive的压缩设置,实际上就是对底层MR在处理数据时的压缩设置. hive在map阶段的压缩 map阶段的设置, ...

  9. 全方位揭秘!大数据从0到1的完美落地之Hive视图

    hive的视图 简介 hive的视图简单理解为逻辑上的表 hive只支持逻辑视图,不支持物化视图 视图存在的意义 对数据进行局部暴露(涉及隐私的数据不暴露) 简化复杂查询 创建视图: create v ...

最新文章

  1. 韩国为三星芯片数据硬刚美国,后者此前警告:不交就等着,后手有的是
  2. Android 解读Event和Main Log
  3. 解决不了bug的时候看一下:
  4. Exchange server 2003迁移到2010后,手动更新地址列表,提示OAB Versions无效
  5. 「后端小伙伴来学前端了」Vue中学会使用Echarts生成各种各样的图表,得学学了,必须要会的基本操作了
  6. centos安装gitlab详解-2017
  7. python从数分到数编(part2)--随机数及数组
  8. 详测 Generics Collections TStack(1): Push、Pop、Peek - 其他功能同 TQueue
  9. java根据pdf模版动态生成pdf
  10. dataframe根据时间戳timestamp切分成多个dataframe
  11. Spring Boot2.1.5(8)--- 各Starter介绍
  12. MySql数据库导出完整版(导出数据库,导出表,导出数据库结构)
  13. typedef struct
  14. 2018美赛E题翻译
  15. 计算机网络应用基础的题,计算机网络应用基础试题
  16. matlab仿真高尔顿正态分布源码,童年趣话:从弹珠台到高斯分布
  17. php 微信 40125,微信请求发生错误!错误代码:40125
  18. CNCC 2022| 隐私计算:理论、技术、应用与未来
  19. ArcBlock 问答 | 扎实打造影响整个区块链生态的产品
  20. oracle 查询 降序排列,Oracle 子查询,按降序排列,取前n条

热门文章

  1. 【赵强老师】事务隔离级别与脏读
  2. TCP拥塞控制(CC),让我不得开心颜
  3. Apache 的架构师们遵循的 30 条设计原则
  4. SecureCRT实现Windows和linux文件互传
  5. 免费使用chatgpt一分钟教你
  6. 亿客CRM系统如何维护好客户关系?
  7. 读书笔记:《MBA 轻松读(第二辑):博弈论》
  8. 小满Vue3第四十五章(Vue3 Web Components)
  9. 关于定时器宽频输出PWM的一些笔记
  10. matlab根号图像,求助高手,用matlab求两幅图像平方和再开根号公式怎样表达?