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

    Hive 分桶

    1、hive分桶

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

    适用场景:

    • 数据抽样(sampling )

    2、开启支持分桶

    开启分桶

    set hive.enforce .bucketing=true;
    
    • 默认: false; 设置为tue之后,mr运行时会根据bucket的个数自动分配reduce task个数。 (用户也可以通过
      mapred.reduce.tasks自己设置reduce任务个数,但分桶时不推荐使用)

    • 注意: - -次作业产生的桶(文件数量)和reduce task个数- 致。

    往分桶表中加载数据

     insert into table bucket_table select columns from tbl;
     //或者
     insert overwrite table bucket_table select columns from tbl;
    

    桶表的抽样:

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

    TABLESAMPLE语法:

    • TABLESAMPLE(BUCKET x OUT OF y)
      一x:表示从哪个bucket开始抽取数据
    • y:必须为该表总bucket数的倍数或因子

    案例

    创建一个源数据表

    CREATE TABLE psn( id INT, name STRING, age INT)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
    

    数据:

    CREATE TABLE psn_1( id INT, name STRING, age INT)
    CLUSTERED BY (age) INTO 4 BUCKETS
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
    

    把源数据表的数据插入分桶表中

    insert into psn_1 select id,name,age from psn;
    

    hdfs中的数据存储:

    记得加油学习哦^_^
  • 相关阅读:
    第九周作业
    第八周作业
    第七周作业
    第六周作业
    JAVA面向对象详细总结
    父愁者联盟--需求规格说明书
    案例分析
    软件工程编程作业1
    构建之法观后提问
    第一次随笔——准备工作
  • 原文地址:https://www.cnblogs.com/shaoyayu/p/13434290.html
Copyright © 2011-2022 走看看