zoukankan      html  css  js  c++  java
  • hive 分桶

    分区

    简介

    为了避免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

    具体讲解1具体讲解2

    关注公众号 海量干货等你
  • 相关阅读:
    linux快速安装lamp环境
    linux配置网卡
    给linux添加yum源。
    windows 环境下wamp环境的搭建。
    jQuery知识点总结(第六天)
    LazyLoad学习(一)之无阻塞动态尽可能并行加载脚本文件以及确保执行顺序
    Jquery复习(十)之$的用法
    JavaScript 时间与日期处理
    如何将一个HTML页面嵌套在另一个页面中?
    iframe学习(七)之父窗口的样式会影响子窗口吗?
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734256.html
Copyright © 2011-2022 走看看