Hive-分区&分桶

作者: 风筝flying | 来源:发表于2018-11-02 17:13 被阅读2次

分区

简介

为了避免Hive每次查询都扫描整个文件,除了采用索引的方式外,还可以通过建立分区表。分区表是指在创建表的时候指定的partition的分区空间,这样在查找分区的数据时,就不用扫描所有数据文件,只需要扫描指定分区的数据文件。

细节

  • 分区表依据分区列的值对表进行划分,每个分区对应表的子目录,所有数据依照分区列放入不同的子目录中
  • 分区列是以字段的形式在表结构中存在,可以通过describe table命令查看到字段存在,但是分区字段不存放实际的数据内容,仅仅是分区的表示。

优点

  • 分区可以缩小查询范围,加快数据的检索速度
  • 便于数据管理,常见日期分区,业务分区等

分桶

简介

对于每一个Hive表(包括分区表),Hive可以进一步对数据进行分桶,桶是更细粒度的数据范围划分。分区是针对文件目录,分桶则是针对数据文件。桶是通过对指定列进行哈希计算来实现的,通过哈希值将一个列名下的数据切分为一组桶,对哈希值除以桶的个数求余数的方式决定该记录存放在哪个桶中,每个桶对应于该列名下的一个存储文件。

优点

  • 更高的查询效率
  • 当需要关联的表的列上都做了分桶,会有更高的连接效率
  • 使取样更高效

创建分桶的table

CREATE TABLE test_bucketed (id INT, name STRING)
CLUSTERED BY (id) SORTED BY (id ASC) INTO 4 BUCKETS

我们使用用户ID来确定如何划分桶(Hive使用对值进行哈希并将结果除 以桶的个数取余数。这样,任何一桶里都会有一个随机的用户集合。

注意

  • 当前不支持对已有的表进行分桶,只能新建分桶表,然后倒如数据
  • 需加入设置自动分桶:set hive.enforce.bucketing = true

相关文章

  • Hive-分区&分桶

    分区 简介 为了避免Hive每次查询都扫描整个文件,除了采用索引的方式外,还可以通过建立分区表。分区表是指在创建表...

  • Hive 1.2.1 分区和分捅

    1. 借鉴 Hive学习笔记——Hive中的分桶Hive分区和分桶(0925)HIVE表索引,分区和分桶的区别 2...

  • Hive桶表

    分桶及抽样查询 分桶表数据存储类似与MR分区分区针对的是数据的存储路径;分桶针对的是数据文件。分区提供一个隔离数据...

  • Hive使用Beeline的DDL操作

    beeline进入交互命令行 内部表 外部表 分区表 分桶表 分桶表&分区表 导入数据的时候需要指定分区 倾斜表 ...

  • Hive 分区/分桶

    分区/桶 Hive 分区 Hive的分区方式:由于Hive实际上是数据文件在HDFS存在的目录区分分区字段是虚拟列...

  • 大数据框架(分区,分桶,分片)

    前言 在大数据分布式中,分区,分桶,分片是设计框架的重点。此篇就来总结各个框架。建议收藏 目录 Hive分区与分桶...

  • Hive 分桶详解

    1分桶 1.1什么是分桶?和分区有什么区别? 分区:Hive在查询数据的时候,一般会扫描整个表的数据,会消耗很多不...

  • 【Hive】优化

    分区表的设计和优化 普通表结构问题 使用分区表可以优化上述查询问题 分桶表的设计和优化 Join问题 分桶表设计 ...

  • hive回顾

    内部表,外部表,分区,分桶, ddl,dml 分区导入,复杂查询(join,group by ),内置函数 文本处...

  • hive分区分桶索引

    1.分区 分区是以字段的形式在表结构中存在,但该字段不存放实际的数据内容,仅仅是分区的表示。 2.分桶 桶是更为细...

网友评论

    本文标题:Hive-分区&分桶

    本文链接:https://www.haomeiwen.com/subject/mzucxqtx.html