首页 > 其他分享 >【博学谷学习记录】超强总结,用心分享 | hive分区与分桶的区别

【博学谷学习记录】超强总结,用心分享 | hive分区与分桶的区别

时间:2023-06-01 10:14:17浏览次数:75  
标签:string 分桶 -- 分区 hive course 分区表 超强

【博学谷IT技术支持】

公众号: 积雷山摩云洞,欢迎关注!!!

概念

  • 分区表: 将数据分散到多个子目录中,在执行查询是,可以根据条件加快查询效率
  • 分桶表:是相对分区更细的颗粒度划分,分桶表是将表查分到不同的文件中,根据数据表某列的hash值进行分区,对某列数据分区就是对该列属性值的hash值取模,按照取模结果对数据分桶。

语句执行

分区表

分区表关键字段是partitioned by,可以设置静态分区或者动态分区。静态分区直接将输入导入分区表,动态分区则通过创建普通表插入数据,将普通表的数据导入到分区表中

-- 分区表
-- partitioned by (字段名 类型) 分类的标准就是分区字段,可以一个,也可以多个。
drop table score;
create table score(
    sid string,
    cid string,
    sscore int
)
partitioned by (dt string)
row format delimited fields terminated by '\t';
load data local inpath '/export/data/hivedatas/score.txt' into table score partition (dt='2022-10-24');
select * from score;

load data local inpath '/export/data/hivedatas/score2.txt' into table score partition (dt='2022-10-25');
select * from score where dt='2022-10-25';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eyk33RlZ-1669470016293)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/14755951ed6e42829b09123a9b640635~tplv-k3u1fbpfcp-watermark.image?)]

分桶表

分桶表关键字段clustered by,分桶表是通过创建普通表将普通表数据导入分桶表数据中

-- 分桶表
-- 开启hive的桶表功能
set hive.enforce.bucketing=true;
-- 设置reduce的个数
set mapreduce.job.reduces=3; -- #该参数在Hive2.x版本之后不起作用

create table course
(
    cid   string,
    cname string,
    tid   string
)
    clustered by (cid) into 3 buckets
    row format delimited fields terminated by '\t';
-- 桶表的数据加载,由于桶表的数据加载通过hdfs  dfs  -put文件或者通过load  data均不好使,
-- 只能通过insert  overwrite
-- 创建普通表:
create table course_common
(
    cid    string,
    cname string,
    tid    string
) row format delimited fields terminated by '\t';
-- 普通表中加载数据
load data local inpath '/export/data/hivedatas/course.txt' into table course_common;

select * from course_common;

-- 通过insert  overwrite给桶表中加载数据
insert overwrite table course select * from course_common cluster by(cid);

select * from course;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FhnwYGa6-1669470016295)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5e38c4c5276a4ae1aa34e1807874659d~tplv-k3u1fbpfcp-watermark.image?)]

总结

  • 分区表:是一个或多个目录;使用partitioned by指定字段,指定字段为伪列,需要指定字段类型; 分区的个数可以增长; 分区表避免全表查询,根据指定字段提高了查询速度。
  • 分桶表:是一个文件;使用clustered by,指定字段为真实字段,需要指定桶的个数; 分桶的个数一旦指定不能再增长; 分桶表在数据抽样和join时提高了MR程序效率。

标签:string,分桶,--,分区,hive,course,分区表,超强
From: https://www.cnblogs.com/neilniu/p/17448123.html

相关文章

  • 【博学谷学习记录】超强总结,用心分享 | yarn的执行流程
    【博学谷IT技术支持】yarn的组成部分hadoop是由Common、HDFS、YARN、MapReduce等核心模块组成,yarn负责解决资源调度问题,这里介绍下yarn的业务执行流程。yarn是Master/Slave结构,主要包含ResourceManage、NodeManager、ApplicationMaster和Conainer等组件。ResourceManager......
  • 【博学谷学习记录】超强总结,用心分享 | 系统资源监控-psutil
    【博学谷IT技术支持】一、介绍psutil(python系统和进程实用程序)是一个跨平台库,用于在Python中检索有关正在运行的进程和系统利用率(CPU、内存、磁盘、网络、传感器)的信息。它主要用于系统监控、分析、限制进程资源和管理正在运行的进程。二、相关api获取CPU信息cpu_count:......
  • 【博学谷学习记录】超强总结,用心分享 | jupyter常用功能
    jupyter安装文档地址https://jupyter.org/installpipinstallnotebook启动命令jupyternotebookjupyter-themes修改主题安装主题https://github.com/dunovank/jupyter-themesgithub地址pipinstall--upgradejupyterthemes查看所有主题jt-l修改主题jt-tg......
  • 【博学谷学习记录】超强总结,用心分享 | hbase基础操作
    【博学谷IT技术支持】HBase的介绍HBase是一个高可靠性、高性能、面向列、可伸缩的分布式操作系统。它是建立在HDFS之上的数据库系统,HBase是不支持SQL的,没有表关系,也无法join,不支持事务。HBase是基于google发布BigTable这篇论文而产生的,基于HDFS,数据最终存储时是在HDFS上,必......
  • 【博学谷学习记录】超强总结,用心分享 | MapReduec编程
    【博学谷IT技术支持】一、介绍MapReduce是将一个大的计算任务拆分成一个个小任务,让小任务在不同的计算机中进行处理,最后将任务的结果进行汇总的过程。MR的工作流程可以分为三个阶段,分别是map、shuffle、reduce二、编程Mapper阶段自定义一个类来集成Mapper类,重写map方法,将方......
  • 【博学谷学习记录】超强总结,用心分享 | java基础
    【博学谷IT技术支持】前言java是一门非常好的语言,比较有必要学习一下:随着科技发展,只会前端是不行的,学习一门后端序言非常有必要,这里记录下自己学习的过程。一、数据类型java是一种强类型语言,数据必须明确类型。基础数据类型有8种,分别是整数类型:byte,short,int,long,......
  • 博学谷学习记录】超强总结,用心分享 | 常用api
    【博学谷IT技术支持】常用APIMath类的常用方法方法名说明publicstaticintabs(inta)返回参数的绝对值publicstaticdoubleceil(doublea)向上取整publicstaticdoublefloor(doublea)向下取整publicstaticintround(floata)四舍五入publicstaticintmax(......
  • 【博学谷学习记录】超强总结,用心分享 | 集合
    【博学谷IT技术支持】集合集合根据存储分为单列集合java.util.Collection和双列结合java.util.Map,集合的长度是可变的,集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类。数组可以存基本数据类型和引用数据类型Collection单列集合的跟接口,用于存储一系列......
  • 【博学谷学习记录】超强总结,用心分享 | python基础学习(数据类型,运算符)
    【博学谷IT技术支持】基础数据类型Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建赋值方式直接赋值a=1#整型变量b=1.0#浮点型变量c='abc'#字符串多个赋值a=b=c=1a,b,c=1,2,3标准数据类型标准数据类型......
  • 博学谷学习记录】超强总结,用心分享 | mongodb基础用法
    【博学谷IT技术支持】数据库连接后端数据库连接语法:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]mongodb://是固定搭配,后边是可选参数用户名加密码,host是要连接服务器的地址,portx是指定的端口,默认27017da......