• Hive基础知识(十七):Hive-SQL分桶表使用


    分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区。对于一张表或者分区,Hive 可以进一步组织成桶,也就是更为细粒度的数据范围划分。

    分桶是将数据集分解成更容易管理的若干部分的另一个技术。

    分区针对的是数据的存储路径;分桶针对的是数据文件。

    1. 先创建分桶表‘

    (1)数据准备

    1. 1001 ss1
    2. 1002 ss2
    3. 1003 ss3
    4. 1004 ss4
    5. 1005 ss5
    6. 1006 ss6
    7. 1007 ss7
    8. 1008 ss8
    9. 1009 ss9
    10. 1010 ss10
    11. 1011 ss11
    12. 1012 ss12
    13. 1013 ss13
    14. 1014 ss14
    15. 1015 ss15
    16. 1016 ss16

    (2)创建分桶表

    1. hive (hive3)> create table stu_buck(id int , name string) clustered by(id) into 4 buckets row format delimited fields terminated by '';
    2. OK
    3. Time taken: 0.671 seconds

    (4)导入数据到分桶表中,load 的方式

    hive (hive3)> load data local inpath '/home/atguigu/hive/student.txt' into table stu_buck;

    (5)查看创建的分桶表中是否分成4 个桶

    (6)查询分桶的数据

    1. hive (hive3)> select * from stu_buck;
    2. OK
    3. stu_buck.id stu_buck.name
    4. 1001 zzz
    5. 1002 ddd
    6. 1111 ccc
    7. Time taken: 0.549 seconds, Fetched: 3 row(s)

    (7)分桶规则:

    根据结果可知:Hive 的分桶采用对分桶字段的值进行哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中

    2. 分桶表操作需要注意的事项:

    (1)reduce 的个数设置为-1,让 Job 自行决定需要用多少个 reduce 或者将 reduce 的个数设置为大于等于分桶表的桶数。

    (2)从 hdfs 中 load 数据到分桶表中,避免本地文件找不到问题。

    (3)不要使用本地模式。

    3. insert 方式将数据导入分桶表

    hive(default)>insert into table stu_buck select * from student_insert;

  • 相关阅读:
    OSPF 的10种网络类型和5种区域类型
    web上构建3d效果 基于three.js的实例
    学信息系统项目管理师第4版系列13_立项管理
    数据结构与算法-图
    多段曲线控温从Simulink仿真到PLC控制实现
    ASEMI整流桥DB307S参数,DB307S规格,DB307S封装
    Spring Boot 如何进行多环境配置
    关于动态规划算法
    cookie、session、token的区别
    Docker pull Images遇到的问题解决
  • 原文地址:https://blog.csdn.net/zuodingquan666/article/details/139940131