zoukankan      html  css  js  c++  java
  • Hive-分区、分桶

    Hive-分区、分桶

    分桶(bucket)

    对某一列取哈希值,对桶的个数求模取余,根据余数决定该条记录进入哪一个桶

    场景:小表关联大表时效果明显(Map Side Join),会把小表数据通过DistributedCache分发到各个Map Side,然后加载到内存和每一个Map任务处理的大表进行JOIN,这样就不必要去做Reduce JOINJOIN时是按照桶来JOIN的,大大减少了JOIN的数量

    不能修改bucket列的值,否则会报以下错误:FAILED:SemanticException [Error 10302]:Updating values of bucketing columns is notsupported. Column id.

    示例

    create table t1(id int , name string) clustered by (id) into 8 buckets stored as orc tblproperties ('transactional'='true');

    关键字clustered声明划分桶的列和桶的个数,这里以id来划分桶,划分8个桶。Hive会计算id列的hash值再以桶的个数取模来计算某条记录属于哪个桶。

    分区(partition)

    分区就是对某列有相同的数据或者某一个数据范围的数据进行分类,在查询时就可以针对分区查询,不必进行全表扫描

    对分区表执行insert时,表名后要跟partition子句。

  • 相关阅读:
    php常见细节错误
    php+jquery注册实例
    yii2添加自定义字段
    yii2开启session
    yii2中textarea中的默认值设置
    yii2.0分页
    yii2多语言
    mysql中查询值为NULL的记录
    yii Html中的a标签使用
    yii2顶部导航使用
  • 原文地址:https://www.cnblogs.com/EnzoDin/p/14198472.html
Copyright © 2011-2022 走看看