面试常问:Hive分区与分桶的区别

2023-10-31

  • 分区表与分桶表的区别:

  1. 创建表时可以同时为表创建一个或者多个分区,我们在加载数据时为期指定具体的 分区,查询数据时可以指定具体的分区从而提高效率。
  2. 分区表是把分区当成目录的,分区实际上是将表文件分成多个有标记的小文件以方便查询。
  • 分区表:

在Hive Select查询中,一般会扫描整个表内容(HDFS上文件的内容),会消耗很多时间做没必要的工作。分区表指的是在创建表时,指定partition的分区空间。

使用场景:

庞大的数据集可能需要耗费大量的时间去处理。在许多场景下,可以通过分区或切片的方法减少每一次扫描总数据量,这种做法可以显著地改善性能。

数据会依照单个或多个列进行分区,通常按照时间、地域或者是商业维度进行分区。比如vido表,分区的依据可以是电影的种类和评级,另外,按照拍摄时间划分可能会得到更一致的结果。为了达到性能表现的一致性,对不同列的划分应该让数据尽可能均匀分布。最好的情况下,分区的划分条件总是能够对应where语句的部分查询条件。

Hive的分区使用HDFS的子目录功能实现。每一个子目录包含了分区对应的列名和每一列的值。但是由于HDFS并不支持大量的子目录,这也给分区的使用带来了限制。我们有必要对表中的分区数量进行预估,从而避免因为分区数量过大带来一系列问题。

Hive查询通常使用分区的列作为查询条件。这样的做法可以指定MapReduce任务在HDFS中指定的子目录下完成扫描的工作。HDFS的文件目录结构可以像索引一样高效利用。

  • 桶表:

1.分区表是将大的表文件划分成多个小文件以利于查询,但是如果数据分布不均衡,也会影响查询效率。
2.桶表可以对数据进行哈希取模,目的是让数据能够均匀的分布在表的各个文件中。
3.物理上,每个桶就是表和分区目录里的一个文件,一个作业产生桶和Reduce任务个数据相同。

使用场景:

1.桶表专门用于抽样查询,不是用来存储数据的表,在需要抽样查询时,在创建和使用桶表。
在使用桶表之间,必须要开启桶。

hive (default)> set hive.enforce.bucketing; #查看是否开启
默认是:false

hive.enforce.bucketing=false

hive (default)> set hive.enforce.bucketing=true; #开启分桶
默认:false;设置为true之后,mr运行时会根据bucket的个数自动分配reduce task个数。
(用户也可以通过mapred.reduce.tasks自己设置reduce任务个数,但分桶时不推荐使用)
注意:一次作业产生的桶(文件数量)应该和reduce task个数一致。

hive 内部表和外部表的区别?

  • 内部表:建表时会在 hdfs 创建一个表的存储目录,增加分区的时候,会将数据复制到此location下,删除数据的时候,将表的数据和元数据一起删除。
  • 外部表:一般会建立分区,增加分区的时候不会将数据移到此表的 location下,删除数据的时候,只删除了表的元数据信息,表的数据不会删除。

寄语专区:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试常问:Hive分区与分桶的区别 的相关文章

随机推荐

  • STM32cubeMX配置工程(全过程+修改MCU方法+注意事项)

    1 修改默认的固件包下载路径 避免占用C盘空间 2 选择ACCESS TO MCU 3 在跳出的界面中的Part Number中搜索对应的芯片型号 4 选好后在右下角双击对应的芯片 然后跳出配置界面 左边可以配置外设 右边可以配置每个IO口
  • srand()和rand()函数详解

    头文件 C语言
  • React入门第一天(绑定事件,动态渲染,修改样式、传参)

    案例一 绑定事件 动态渲染 import React Component from react export default class App extends Component constructor props super props
  • 打造酷炫RecyclerView 进入 item动画效果

    参考链接 点击这里
  • mysql分表后的联合查询_MySQL分库分表分表后数据的查询(5th)

    前言 在分表完之后显然对于数据的查询会变的比较的复杂 特别是在表的关联方面 在有些情况下根本就不能使用JOIN 其实个人是比较鼓励将那些大的JOIN SQL拆分成几个小的SQL来查询数据 这样虽然总体的效率可能会稍稍下降 如果使用了连接池完
  • 干货教你在PostgreSql中使用JSON字段

    通过本文可掌握在pg数据库中如何正确使用json字段 如何进行数据查询 在where子查询中如何使用 以及对json值进行聚合查询使用 概述 JSON 代表 JavaScript Object Notation JSON是开放的标准格式 由
  • SCAU OJ综合性实验

    在当前目录中存在文件名为 case1 in 其中case后为数字1 不是字母l 写错提交后会判错 的文本文件 其内容为一篇英文文章 以EOF作为结束标志 现要求读取该文本文件内容 统计文章中每个单词出现的次数 并输出出现次数最多的前5个单词
  • 理解 以太坊Serenity - 第一部分: 深度抽象

    Origin post by Vitalik Buterin on December 24th 2015 我们已经公开继续改进以太坊协议的计划和长期开发路线图相当长一段时间了 这个做法也是来自于从1 0版本发布之前或者事后没有能及时处理的错
  • 迅捷fw325r虚拟服务器设置,Fast迅捷FW325R无线路由器设置

    新购买的Fast迅捷FW325R无线路由器要怎么设置呢 其实关于迅捷FW325R无线路由器的设置方法跟其它以falogin cn为默认登录地址的迅捷无线路由器是一样的 首先我们要做的就是正确的安装迅捷FW325R无线路由器 其次 查看电脑的
  • SpringBoot+MybatisPlus+Druid 配置多数据源

    项目上要用到多数据源 发现MybatisPlus从配置到切换数据源有一套快捷的实现 便选用了MybatisPlus的多数据源配置 本文的 dynamic datasource spring boot starter 与 mybatis pl
  • 如何理解和编程实现证据理论的Dempster组合规则?

    由于CSDN编公式太麻烦 我就先在文档里写好 然后转成图片了 OK 接下来我们来一段代码 把上述过程实现了 clear all Matlab code for Dempster s combinatonal rule in belief f
  • zynq ALSA

    设计参考的代码PS和PL端的下载链接如下 linuxkernel版本号4 4 基于Zedboard 的ADAU1761功放芯片 ADI公司kernel和hdlgit链接地址 Took Linux device tree is include
  • 镁光闪存颗粒对照表_内存颗粒型号识别

    容量 MB Samsung 三星 ETRON 钰创 Zentel 力积 Hynix 海力士 Elpida 尔必达 2MB N A EM636165TS 6G N A N A 8MB K4S641632N EM638165TS 6G A3V6
  • 面向对象以及特点

    历史 汇编语言 C语言 对象过程化 C Java javaScript Python PHP 面向对象编程思想 三大特征 1 抽象 封装 抽象是指强调实体的本质 内在的属性 在系统开发中 抽象指的是在决定如何实现对象之前的对象的意义和行为
  • 32通过tcp发送数组_西门子S71500与S7300PN的TCP通信(图文)

    加微信号 15021230050 邀请您加入 信控电气 微信群 点击文章最下方 阅读原文 加入超级工控技术群 免费学习PLC编程技术 包吃住还有工资 西门子S7 1500与S7 300PN的TCP通信 1 概述 2 自动化解决方案 2 1网
  • 摆动排序leetcode324

    给你一个整数数组 nums 将它重新排列成 nums 0 lt nums 1 gt nums 2 lt nums 3 的顺序 你可以假设所有输入数组都可以得到满足题目要求的结果 示例 1 输入 nums 1 5 1 1 6 4 输出 1 6
  • 【单片机】STM32F030硬件SPI的坑

    使用的是STM32F030F4P6 这是一个小封装的单片机 但是五脏俱全 很多功能 就是引脚不多 使用到SPI的时候感觉应该和以前用过的STM32F103系列是一样的 寄存器的结构几乎是完全一样的 寄存器操作的程序甚至都能兼容 但是在使用的
  • Flutter1.0实践要点(Dart语法回顾)

    Flutter1 0实践要点 Flutter 文档 Flutter widgets文档 实践要点 dart文件命名使用小写加下滑线 dart类命名使用驼峰 Dart语法 绝对定位widget Stack Positioned url包裹wi
  • A Survey of Learning on Small Data(二)

    本文是 A Survey of Learning on Small Data 的翻译 原文链接 小数据学习综述 4 几何角度 4 1 Frechet均值 4 2 欧几里得均值 4 3 非欧均值 4 3 1 Poincare质心 4 3 2
  • 面试常问:Hive分区与分桶的区别

    分区表与分桶表的区别 创建表时可以同时为表创建一个或者多个分区 我们在加载数据时为期指定具体的 分区 查询数据时可以指定具体的分区从而提高效率 分区表是把分区当成目录的 分区实际上是将表文件分成多个有标记的小文件以方便查询 分区表 在Hiv