美文网首页
Hive 分桶

Hive 分桶

作者: 发条香蕉 | 来源:发表于2016-08-30 20:34 被阅读0次

Hive 分桶

  • 分桶
    • 对于每一个表或者分区,Hive可以进一步组织成桶,也就是更为细粒度的数据范围划分
    • Hive是针对某一列进行分桶
    • Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中
  • 好处
    • 获得更高的查询处理效率
    • 使取样(sampling) 更高效
  • 分桶的使用
    • select * from bucketed_user
    • tablesample(bucket 1 out of 2 on id)
  • bucket join
    • set hive.optimize.bucketmapjoin = true;
    • set hive.optimize.bucketmapjoin.sortedmerge= true;
    • set hive.input.format=org.apache.hadoop.hive.ql.io.BucketizedHiveInputFormat;
  • 样例:
    • create table bucketed_user(
    • id int,
    • name string
    • )
    • clustered by (id) sorted by (name) into 4 buckets
    • row format delimited fields terminated by '\t' stored as textfile;
  • 分桶默认不开启 需开启
    • Set hive.enforce.bucketing= true;
  • 链接两个在(包含连接列)相同列上划分了桶的表,可以使用Map端链接(Map-side join)高效的实现。比如Join操作。对于Join操作两个表有一个相同的列,如果对着两个表都进行了桶操作。那么将保持相同列值得桶进行Join操作就可以,可以大大减少Join的数据量。
  • 对于map端连接的情况,两个表以相同方式划分桶。处理左边表内某个桶的mapper知道右边的表内相匹配的行在对应的桶内。因此,mapper只需要获取那个桶(这只是右边表内存储数据的一小部分)即可进行连接。这一优化方法并不一定要求 两个表必须桶的个数相同,两个表的桶个数是倍数关系也可以。

相关文章

  • Hive 1.2.1 分区和分捅

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

  • Hive 分桶

    Hive 分桶 分桶对于每一个表或者分区,Hive可以进一步组织成桶,也就是更为细粒度的数据范围划分Hive是针对...

  • Hive分桶

    Hive分桶 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。 对于hive中每一个表、分区都可以进一...

  • Hive分桶

    提问:为什么要创建分桶表呢? 我认为有以下两点原因: (1):分桶表是为了在分区表的基础上,进...

  • Hive分桶表

    测试数据 创建分桶表 设置变量,设置分桶为true, 设置reduce数量是分桶的数量个数 加载数据 检查刚刚加载...

  • Hive 分区/分桶

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

  • Hive 分桶详解

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

  • hive分桶实践

    A表1亿条记录 B表1亿条记录, A表B表通过id字段关联,直接关联报错,跑不动任务; 现在对A B表分别进行分桶...

  • 案例详解__HIVE中内部表、外部表、分区表和分桶表

    目录一、Hive建表语法二、内部表外部表三、分区表四、分桶表 Hive在建表时可指定内部表、外部表、分区表和分桶表...

  • Hive的分桶详解

    Hive分桶通俗点来说就是将表(或者分区,也就是hdfs上的目录而真正的数据是存储在该目录下的文件)中文件分成几个...

网友评论

      本文标题:Hive 分桶

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