Hive数据定义语言-DDL-建表高阶语法(内外部、分区、分桶、事务、视图、物化视图)

news2025/7/23 8:12:04

文章目录

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

5. 物化视图-Materialized Views

5.1 概念

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

5.2 物化视图、视图区别

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

5.3 语法

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35534.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编译openMVG出现的错误的解决

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> submodule(s) are missing, please update your repository 在使用CMake生成openMVG解决方案时&#xff0c;出现错误&#xff1a; CMake Error at CMakeL…

另眼看数据中台

目录 前言&#xff1a; 一、故事的开始 二、成也中台&#xff0c;败也中台 1、中台是什么 2、数据中台与企业数字化转型 3、中台的赋能 4、数据中台、业务中台、技术中台 5、中台不一定适合你 ​编辑​编辑小结&#xff1a; 三、 自检数据应用的成熟度 前言&#xff1…

Python学习基础笔记十二——文件

1、目的&#xff1a;是要将数据永久地保存下来&#xff0c;就需要将数据永久保存在硬盘中。 2、概念&#xff1a;文件就是操作系统提供给应用程序来操作硬盘虚拟接口&#xff0c;用户或应用程序通过操作文件&#xff0c;可以将自己的数据永久地保存下来。 3、步骤&#xff1b; …

MACU-Net-用于精细分辨率遥感图像语义分割网络

摘要&#xff1a; 在本文中我们结合了由不同层次的U-Net生成的多尺度特征&#xff0c;设计了一个多尺度跳跃连接和基于非对称卷积的网络--MACU-Net。 网络具有以下几个优点1&#xff09;多尺度跳跃连接将低层和高层特征图中包含的语义特征结合并重新进行排列2&#xff09;非对…

一文搞懂傅里叶级数与变换

描述 这篇文章的目标&#xff1a;以最简单易懂的方式&#xff0c;让大家学会傅里叶变换&#xff01; 为什么要写一篇关于傅里叶变换相关知识的文章呢。有两个原因&#xff1a; 一、这个知识很有趣&#xff0c;可以理解它是一件炫酷的事情。在工作中&#xff0c;一次分享会同事…

BufferPool缓存机制

BufferPool缓存机制 1、更新数据流程 流程图 sql更新数据刷到磁盘前会经过serve层 连接器-管理连接和权限校验优化器-语法词法分析优化器-执行计划生成索引选择执行器-连接bufferPool 1.1 流程步骤 从磁盘加载数据到buffer pool&#xff0c;会先去判断要更新的数据所在数据…

Hantek6022BE 虚拟示波器

​ 0. Hantek 厂家提供的介绍 安装方法按照说明来。 很多人都说原厂的软件不好用&#xff0c;于是折腾就开始了&#xff1a; 1. VIRTINS Multi-Instrument 这个别人已经写的很详细了 大概需要准备 Multi-Ins 这软件&#xff0c;目前找到 3.7 的合用 菜单里 添加设备到库&a…

HTML+CSS详细知识点复习(上)

文章目录一、初识HTML1、标签概述二、初识CSS1、CSS核心基础2、设置文本样式3、高级特性4、CSS的优先级三、CSS选择器1、关系选择器四、盒子模型1、边框属性2、边距属性3、背景属性4、盒子的宽与高5、CSS3新增盒子模型属性一、初识HTML HTML&#xff08;超文本标记语言&#x…

用Python采集世界杯球队热搜数据 并发送邮箱通知

前言 嗨嗨&#xff0c;最近世界杯的热度可是一直在增长啊 待会就是 卡塔尔和塞内加尔打了 怎么说 还是有点期待结果的 趁现在有点无聊 就想着用Python采集世界杯球队热搜数据 顺便 发送邮箱通知 话不多说&#xff0c;马上开始 知识点 动态数据抓包requests发送请求json数据…

【Proteus仿真】【51单片机】智能雨刷器设计

文章目录一、主要功能二、硬件资源三、软件设计四、实验现象联系作者一、主要功能 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用LCD1602液晶模块、按键模块、雨滴传感器、ADC、LED模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示雨刷器当前模式、…

如何制定测试团队度量体系

1、前言 每当月底或一个季度结束&#xff0c;公司或项目都会进行考核指标的统计&#xff0c;来总结每个组员在这个阶段的工作产出与绩效成绩。 那么制定哪些指标最为标准&#xff0c;最为专业&#xff0c;同时针对整个项目组都是公平的&#xff0c;这个就需要每个公司或项目根…

Python入门

目录 一、Python安装及环境搭建 二、Python运用&#xff08;数据类型&#xff09; 基本数据类型 引用数据类型 一、Python安装及环境搭建 Python环境安装包下载 https://www.python.org/ https://www.python.org/downloads/windows/ Python开发工具PyCharm下载 https://www.…

南卡和FIIL 哪个更好用?南卡和FIIL CC nano蓝牙耳机对比测评

作为一个狂热的蓝牙爱好者&#xff0c;我也用了不少蓝牙耳机了&#xff0c;真的是对蓝牙耳机爱不释手。自从蓝牙耳机出现以来&#xff0c;我们都看到了它的迅速发展&#xff0c;尤其是这两年&#xff0c;蓝牙耳机越来越受欢迎&#xff0c;已经取代了传统的有线耳机&#xff0c;…

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境

目录 1.掌握Linux常用的基本命令功能、语法结构和用法示例 1.1linux编程环境 1.1.1系统平台环境 linux平台特性 1.1.2开发工具环境 1.1.3基于文模式的开发平台 1.1.4集成开发平台EclipseCDT 1.1.5文档帮助环境 1.2常用编辑器 1.2.1VIM编辑器 1.VIM的模式 2.VIM的启…

爆冷?黑马?这次用python来给你推测一波.....

人生苦短 我用python 在刚刚结束的2022年卡塔尔世界杯E组第一轮一场比赛中&#xff0c; 德国队爆冷1:2不敌日本队。 上半场&#xff0c;日本队门将权田修一出击扑倒劳姆送点&#xff0c; 京多安主罚命中先拔头筹&#xff1b; 下半场&#xff0c;堂安律门前补射为日本队扳平…

如何裁剪视频画面?快来看看这个详细教程

有什么简单的方法可以裁剪视频&#xff1f;现在有很多小伙伴都会在社交平台上发布自己的视频内容&#xff0c;分享自己的日常&#xff0c;那在编辑视频的时候肯定是会对视频内容进行剪切的&#xff0c;那么怎么裁剪视频呢&#xff1f;有哪些简单的方法可以裁剪视频呢&#xff1…

Selenium基础 — TMLTestRunner测试报告

目录 1、HTMLTestRunner介绍 2、HTMLTestRunner的使用 3、测试报告示例 4、封装成模块 1、学习思路和方法 2、想学习却无从下手&#xff0c;该如何学习&#xff1f; 3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件.... 4、有了安装包和学习资料&#x…

javaweb JAVA JSP零食销售系统购物系统ssm购物系统购物商城系统源码(ssm电子商务系统)网上零食在线销售

JSP零食销售系统购物系统ssm购物系统购物商城系统源码&#xff08;ssm电子商务系统&#xff09;网上零食在线销售

[网络工程师]-应用层协议-DNS

域名系统&#xff08;Domain Name System,DNS&#xff09;是把主机域名解析成IP地址的系统&#xff0c;解决了IP地址难记的问题。该系统由解析器和域名服务器组成。DNS主要基于UDP协议&#xff0c;较少情况下使用TCP协议&#xff0c;端口号均为53。域名系统由三部分组成&#x…

解决Mybatis-Plus或PageHelper多表分页查询总条数不对问题

Mybatis-Plus版本3.4之后&#xff0c;对分页查询进行了优化 对于单表查询是没有问题的。而需要多表关联查询&#xff08;自写sql&#xff09;时&#xff0c;就会查询调用Mybatis-Plus的 .page(E page, Wrapper queryWrapper); 方法是就就会出现查询总数不对问题。 业务需要查…