• Hive 桶表


    桶表
    1)桶是更为细粒度的数据范围划分,它能使一些特定的查询效率更高
    2)保存数据时,取分桶字段的哈希值,跟分桶数取余,然后将数据放到不同的桶(文件)里。

    1、定义:
    create table b1(id int, name string) clustered by (id) into 4 buckets;

    2、加载数据:
    1)使用load data 来加载数据,可以加载成功,也能查询到,但是没有分桶。
    2)insert into b1 select .. ,调用mapreduce任务,对分桶字段进行计算,将数据分到不同的桶里。

    3、桶表的两个应用场景:
    1、join连接操作
    如果两个表的桶划分一致,并且连接字段是分桶字段,可以提高连接的效率

    2、抽样查询
    select * from b1 tablesample(bucket 1 out of 4 on id);

    抽样语法:
        tablesample(bucket x out of y)

        y必须是table总bucket数的倍数或者因子。hive根据y的大小,决定抽样的比例(表的分桶总数/y)。例如,table总共分了64份,当y=32时,抽取 (64/32=)2个bucket的数据,当y=128时,抽取(64/128=)1/2个bucket的数据。

        x表示从哪个bucket开始抽取。例 如,table总bucket数为32,tablesample(bucket 3 out of 16),表示总共抽取(32/16=)2个bucket的数据,分别为第3个bucket和第(3+16=)19个bucket的数据。





  • 相关阅读:
    【Java】Swing-LookAndFeel 初解
    【软件】软件发布版本号说明
    【Gradle】Gradle compile 运用
    【Java】String,StringBuilder,StringBuffer 区别与实现
    Java面试题
    java面向对象_抽象类和接口
    Java学习_int和Integer的区别+包装类
    PHP-格式标签
    PHP+Zend 输出时中文乱码问题
    JSP学习
  • 原文地址:https://www.cnblogs.com/lishouguang/p/4560764.html
Copyright © 2020-2023  润新知