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 ',';

  • 相关阅读:
    ajax上传文件
    nginx location指令详解
    总结php删除html标签和标签内的内容的方法
    useBuiltIns: 'usage'
    uni-app如何页面传参数的几种方法总结
    基于 schema 的数据校验
    canvas时点击事件和长按冲突
    vue 下载文件流,后台是get方式 ,并且导出出现excel乱码问题
    uni-app canvas 实现文字居中
    git reflog 回退
  • 原文地址:https://www.cnblogs.com/yszd/p/10726220.html
Copyright © 2011-2022 走看看