Hive数据定义语言-DDL-建表高阶语法(内外部、分区、分桶、事务、视图、物化视图)
创始人
2024-02-15 18:24:58

文章目录

  • 1. 内部表、外部表
    • 1.1 内部表
    • 1.2 外部表
    • 1.3 内、外部表差异
    • 1.4 Location关键字的作用
  • 2. 分区表-Partitioned Tables
    • 2.1 概念
    • 2.2 创建
    • 2.3 分区表数据加载
      • 2.3.1 静态分区
      • 2.3.2 动态分区
    • 2.4 注意事项
  • 3. 分桶表-Bucketed Tables
    • 3.1 概念
    • 3.2 规则
    • 3.3 语法
  • 3. 事务表-Transactional Tables
    • 3.1 局限性
    • 3.2 配置开启事务、创建事务表
  • 4. 视图-Views
    • 4.1 概念
    • 4.2 语法
  • 5. 物化视图-Materialized Views
    • 5.1 概念
    • 5.2 物化视图、视图区别
    • 5.3 语法


1. 内部表、外部表

1.1 内部表

  • 默认情况下创建的表就是内部表。

  • 删除内部表时,会删除数据以及表的元数据。
    在这里插入图片描述

  • 可以使用DESCRIBE FORMATTED tablename来获取表的元数据描述信息,从中可以看出表的类型。
    在这里插入图片描述

1.2 外部表

  • 外部表中的数据不是Hive拥有或管理的。

  • 创建一个外部表,需要使用EXTERNAL语法关键字。

  • 删除外部表只会删除元数据,而不会删除实际数据。
    在这里插入图片描述

  • 可以使用DESCRIBE FORMATTED tablename来获取表的元数据描述信息,从中可以看出表的类型。
    在这里插入图片描述

1.3 内、外部表差异

  • 两者,Hive都在Hive Metastore中管理定义、字段类型等元数据信息。
  • 删除内部表时,会从Metastore中删除表元数据,还会从HDFS中删除其所有数据文件。
  • 删除外部表时,只会从Metastore中删除表的元数据,并保持HDFS位置中的实际数据不变。

1.4 Location关键字的作用

  • 创建外部表不指定location,由默认参数控制

2. 分区表-Partitioned Tables

2.1 概念

  • 当Hive表对应的数据量大、文件个数多时,为了避免查询时全表扫描数据,Hive支持根据指定的字段对表进行分区。
    在这里插入图片描述

2.2 创建

  • 分区表语法
    在这里插入图片描述

注意:分区字段不能是表中已经存在的字段,因为分区字段最终也会以虚拟字段的形式显示再表结构上

  • 实例示范:
    在这里插入图片描述

2.3 分区表数据加载

2.3.1 静态分区

  • 静态分区指的是分区属性值是由用户再加载数据的时候手动指定的。
  • 语法如下:

在这里插入图片描述

Local参数用于指定待加载的数据是位于本地系统还是HDFS文件系统。

2.3.2 动态分区

  • 动态分区指的是分区的字段值是基于查询结果(参数位置)自动推断出来的。核心语法是insert+select
  • 启动hive动态分区,需要在hive会话中设置两个参数:
    在这里插入图片描述
  • 实例示范:
    在这里插入图片描述

2.4 注意事项

一、分区表不是建表的比要语法规则,是一种优化手段表,可选;
二、分区字段不能是表中已有的字段,不能重复;
三、分区字段是虚拟字段,其数据并不存储在底层的文件中;
四、分区字段值的确定来于用户价值数据手动指定(静态分区)或者根据查询结果位置自动推断(动态分区)
五、Hive支持多重分区,也就是说在分区的基础上继续分区,划分更加细粒度。

3. 分桶表-Bucketed Tables

3.1 概念

  • 分桶表也叫做桶表,叫法源自建表语法中bucket单词,是一种用户优化查询而设计的表类型。
  • 分桶表对应的数据文件被拆分成若干个独立的小文件。
  • 在分桶时,要指定根据哪个字段将数据分为几桶
    在这里插入图片描述

3.2 规则

  • 分桶规则如下:桶编号相同的数据会被分到同一个桶当中。
    在这里插入图片描述
    在这里插入图片描述

3.3 语法

在这里插入图片描述

  • CLUSTERED BY (col_name)表示根据哪个字段进行分;
  • INTO N BUCKETS表示分为几桶(也就是几个部分)。
  • 注意:分桶的字段必须是表中已经存在的字段。
    在这里插入图片描述
  • 实例示范:
    在这里插入图片描述
    在这里插入图片描述

3. 事务表-Transactional Tables

3.1 局限性

  • 尚不支持BEGIN,COMMIT和ROLLBACK。所有语言操作都是自动提交的。
  • 仅支持ORC文件格式(STORED AS ORC)
  • 默认情况下事务配置为关闭。需要配置参数开启使用。
  • 表必须是分桶表才可以使用事务功能。
  • 表参数transactional必须为true;
  • 外部表不能成为ACID表,不允许从非ACID会话读取/写入ACID表。

3.2 配置开启事务、创建事务表

在这里插入图片描述
在这里插入图片描述

4. 视图-Views

4.1 概念

  • Hive中的视图(view)是一种虚拟表,只保存定义,不实际存储数据。
  • 通常从真实的物理表查询中创建生成视图,也可以从已经存在的视图上创建新视图。
  • 创建视图时,将冻结视图的架构,如果删除或更改基础表,则视图将失败。
  • 视图是用来简化操作的,不缓冲记录,也没有提高查询性能。

4.2 语法

  • 创建视图:
create view  as select ... from  limit ...;
  • 显示当前已有的视图
show tables;
show views;--hive v2.2.0之后支持
  • 视图的查询使用
select * from ;
  • 查看视图定义
show create table ;
  • 删除视图
drop view ;
  • 更改视图属性
alter view  set TBLPROPERTIED('comment'='This is a view');
  • 更改视图定义
alter view  as select ... from  limit ...;

5. 物化视图-Materialized Views

5.1 概念

  • 物化视图是一个包括查询结果的数据库对象,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果。在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果
  • 使用物化视图的目的就是通过预计算,提高查询性能

5.2 物化视图、视图区别

  • 视图是需您的,逻辑存在的,只有定义没有存储数据。
  • 物化视图是真实的,物理存在的,里面存储着预计算的数据。

5.3 语法

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...