zoukankan      html  css  js  c++  java
  • 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的数据。





  • 相关阅读:
    MySQL设置用户
    tensorflow学习笔记12
    tensorflow学习笔记11
    tensorflow学习笔记10
    tensorflow学习笔记9
    博雅机器学习十讲10
    博雅机器学习十讲9
    博雅机器学习十讲8
    博雅机器学习十讲7
    博雅机器学习十讲6
  • 原文地址:https://www.cnblogs.com/lishouguang/p/4560764.html
Copyright © 2011-2022 走看看