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

    1.简介

      分桶表是对列值取哈希值的方式将不同数据放到不同文件中进行存储。对于hive中每一个表,分区都可以进一步进行分桶。由列的哈希值除以桶的个数来决定数据划分到哪个桶里。

    2.适用场景

      1.数据抽样【sampling】

      2.map-join

    3.开启支持分桶

      配置;set hive.enforce.bucketing=true;

      默认值:false

      设置为true后,mapreduce运行时会根据bucket的个数自动分配reduce task个数

      注意:首次作业产生的桶【文件个数】和reduce task个数一致。

    4.加载数据  

      执行:

        insert into table bucket_table select columnd from tbl;

        insert override table bucket_table select columns from tbl;

    5.抽样

      执行:

        select * from bucket_table tablesample(bucket 1 out of 4 on columns);

      语法:TABLESAMPLE(BUCKET x OUT OF y)

      备注:y必须是table总bucket数的倍数或者因子。hive根据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的数据。

    6.创建分桶表

      执行:
        create table psnbucket(id INT,name STRING,age INT) clustered by (age) into 4 buckets row format delimited fields terminated by ',';

  • 相关阅读:
    Local File Manage in JavaScript Using FileSystemObject
    How to Register COM in VS
    Permission Error When Building C++ in VS2010
    Upload and Download File using Java
    JavaScript Interactive with ActiveX Control
    一个完整的Installshield安装程序实例
    一个.NET(C#)的双键字典类
    C#实现内存中字符串或byte[]的加解密
    判断请求是否来自 AJAX
    Reflector 7.3.018
  • 原文地址:https://www.cnblogs.com/yszd/p/10726220.html
Copyright © 2011-2022 走看看