美文网首页
Hive分区参考

Hive分区参考

作者: liuzx32 | 来源:发表于2019-03-26 20:18 被阅读0次

    一、为啥分区

    hive 为了避免全表查询,从而引进分区,将数据按目录进行划分,减少不必要的查询,从而提高效率

    二、hive的分区和mysql分区的区别

    mysql的分区字段用的是表内字段,hive的分区字段采用表外字段,也就是使用伪字段,分区字段在创建表的时候指定

    分区的关键字:partitioned by(字段)

    三、Hive中的动态分区

    hive.exec.dynamic.partition=true; 是否允许动态分区
    hive.exec.dynamic.partition.mode=strict/nostrict; 动态区模式为严格模式
    hive.exec.max.dynamic.partitions=1000; 允许最大的动态分区
    hive.exec.max.dynamic.partitions.pernode=100; 单个节点允许最大分区

    strict:严格模式,最少需要一个静态分区列(指定固定值)
    nostrict:费严格模式,允许所有的分区字段都为动态。

    hive的静态分区:分区数据已知
    hive的动态分区:分区数据未知(不知道有多少个分区)
    hive的混合分区:有动态有静态

    四、hive的分桶

    1. 为什么分桶
      提高数据的细粒度,将之前的单个文件变成多个文件
      作用:
      1、对数据进行抽样查询,较为高效。
      2、可以使查询效率提高

    2. 分桶技术
      分桶字段是表内字段,默认是对分桶的字段进行hash值,然后模总的桶数,得到的值则是分区桶数

    3. hive分桶的关键字
      bucket
      clustered by(id) into 4 buckets

    注意:

    分区使用表外的字段,分桶使用表内字段
    分区可以使用load加载数据,而分桶就必须要使用insert into方式加载数据
    分区常用;分桶少用。

    相关文章

      网友评论

          本文标题:Hive分区参考

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