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项目和web项目路径的区别
    ModelAndView跳转
    struts漏包和tomcat上传问题
    映射文件的路径写错的出现的错误
    hibernate二级缓存
    find命令小结
    【转】Python的XML-RPC简介
    Python的类实例方法,类方法,类静态方法
    itertools模块速查
    Python中处理时间 —— time模块
  • 原文地址:https://www.cnblogs.com/shaoyayu/p/13434290.html
Copyright © 2011-2022 走看看