Hive的表类型

   在Hive的学习中,有一个非常重要的知识点,那就是Hive的表类型。

  Hive的表类型主要有:内部表(受控表)、外部表、临时表、分区表、分桶表。

  一:内部表

      内部表又称受控表,hive默认创建的表类型为内部表,当删除内部表的时候,数据和元数据都会被删除。

  二:外部表

      创建外部表需要使用EXTERNAL关键字,当删除外部表的时候,只删除元数据,不删除数据。

      使用场景,例如:某个公司的原始日志数据存放在一个目录中,多个部门对这些原始数据进行分析,那么创建外部表就是比较好的选择了,因为即使删除了外部表,原始数据并不会被删除。

  三:临时表(不支持分区)

     创建临时表,使用TEMPORARY关键字,临时表只在当前会话中存在,当会话结束后,临时表会自动删除。

  四:分区表

     创建分区表是为了防止暴力扫描全表,提高查询效率。分区字段在源文件中是不存在的,需要在添加数据的时候手动指定。

     每一个分区对应一个目录。通过partitioned by来在创建分区表的时候添加分区字段。

      使用场景:可以通过分区表,将每天搜集的数据进行区分,查询统计的时候通过指定分区,提高查询效率。

  五:分桶表

    桶是比表或分区更为细粒度的数据范围划分。针对某一列进行桶的组织,对列值哈希,然后除以桶的个数求余,决定将该条记录存放到哪个桶中。

    需要先设置:set hive.enforce.bucketing = true;

    再创建分桶表:

    create table emp_bu(
    empno int,
    ename string,
    job string,
    mgr int,
    hiredate string,
    sal double,
    comm double,
    deptno int
 )CLUSTERED BY(deptno) INTO 4 BUCKETS
    row format delimited fields terminated by '\t';

    

 

posted @ 2024-01-02 09:29  田攀攀的博客  阅读(318)  评论(0)    收藏  举报