Hive讲课笔记:内部表与外部表

文章目录

  • 零、学习目标
  • 一、导言
  • 二、内部表
    • 1.1 什么是内部表
      • 1.1.1 内部表的定义
      • 1.1.2 内部表的关键特性
    • 1.2 创建与操作内部表
      • 1.2.1 创建并查看数据库
      • 1.2.2 创建数据表
      • 1.2.3 插入表记录
      • 1.2.4 通过HDFS WebUI查看数据库与表
  • 三、外部表
    • 2.1 什么是外部表
    • 2.2 创建与操作外部表
      • 2.2.1 在虚拟机上建文本文件
      • 2.2.2 上传文件到HDFS指定目录
      • 2.2.3 基于HDFS目录创建外部表
      • 2.2.4 查询外部表记录
      • 2.2.5 在MySQL里查看hive元数据信息
  • 四、内部表与外部表的区别
    • 3.1 区别体现在删除表
    • 3.2 通过实验进行验证
      • 3.2.1 删除内部表
      • 3.2.2 删除外部表
      • 3.2.3 查看MySQL里hive元数据
  • 五、总结与展望

零、学习目标

  1. 理解并掌握Apache Hive内部表和外部表的定义、核心特性和应用场景。
  2. 掌握在Hive中创建、查询、插入数据以及删除内部表的具体操作步骤,理解其数据生命周期管理机制及对Hive系统的依赖性。
  3. 学会如何基于已存在的HDFS数据创建Hive外部表,并了解其在数据安全性、跨平台共享方面的优势,以及在删除外部表时元数据与实际数据的区别处理方式。
  4. 通过实践操作对比内部表与外部表在删除后的不同效果,明确两者在数据持久性和访问控制上的差异。
  5. 根据业务需求和数据管理策略,学会灵活运用内部表和外部表来优化大数据处理流程,提高数据资产管理效率,并针对底层数据文件进行有效维护与管理。

一、导言

  • Apache Hive作为大数据处理的重要工具,其内部表与外部表是两种核心的数据存储和管理机制。内部表由Hive全权管理,数据存储在HDFS特定目录下,删除时会连同元数据及HDFS数据一同删除;创建过程包括定义表结构、插入数据等步骤,并且完全依赖于Hive系统。而外部表则赋予用户更大的灵活性,它可以引用已存在于HDFS中的数据,仅在删除时移除元数据,保留实际数据,利于跨平台共享和防止意外删除。通过实际操作演示,我们深入理解了如何创建、查询和管理这两种表类型,并强调了它们在不同应用场景下的价值。在未来的大数据实践中,依据数据来源、持久性和安全性需求,灵活运用Hive内部表与外部表将有利于提升数据处理效能与保障数据资产安全。

二、内部表

1.1 什么是内部表

1.1.1 内部表的定义

  • Hive内部表是Hive数据仓库中的一种表类型。当在Hive中创建一个内部表时,表的数据和元数据都由Hive进行管理。

1.1.2 内部表的关键特性

  1. 存储位置:Hive内部表的数据默认存储在Hadoop Distributed File System (HDFS) 中的一个指定目录下,这个目录由Hive自动管理。

  2. 元数据管理:Hive内部表的元数据(如表结构、分区信息等)存储在 Hive Metastore 中,这是一个集中式的服务,用于存储和管理所有Hive表的元数据。

  3. 数据生命周期:删除Hive内部表时,不仅会删除表的元数据,还会从HDFS中删除与该表相关联的实际数据文件。

  4. 独立性:由于Hive完全管理内部表的数据和元数据,因此这些表对Hive具有完全的依赖性。如果不再使用Hive,内部表的数据将无法直接通过其他方式访问。

  5. 表操作限制:对Hive内部表进行数据修改或移动等操作可能会受到限制,因为这些操作可能会影响Hive对数据的管理和追踪。

  • 总的来说,Hive内部表是一种适合于数据仓库环境中长期存储和管理数据的表类型,它提供了方便的数据管理和查询功能,但同时也要求用户考虑其对数据持久性和访问方式的需求。

1.2 创建与操作内部表

1.2.1 创建并查看数据库

  • 创建park数据库,执行命令CREATE DATABASE park
    在这里插入图片描述

  • 在MySQL里查看数据库信息
    在这里插入图片描述

  • 注意:数据库park的DB_ID是2,后面我们会用到它。

  • 在HDFS上查看park数据库对应的目录/user/hive/warehouse/park.db
    在这里插入图片描述

1.2.2 创建数据表

  • 在数据库park里里创建student内部表

  • 切换到park数据库后,执行语句:CREATE TABLE student (id int, name string, age int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '';
    在这里插入图片描述

  • 在MySQL查看表信息,执行语句:SELECT TBL_ID, TBL_NAME, TBL_TYPE, NAME FROM TBLS INNER JOIN DBS ON TBLS.DB_ID = DBS.DB_ID;
    在这里插入图片描述

1.2.3 插入表记录

  • 使用INSERT INTO命令插入数据
INSERT INTO student VALUES(1, '李晓敏', 18),(2, '陈燕文', 19),(3, '唐俊涵', 18);
  • 执行上述语句,插入3条记录
    在这里插入图片描述

1.2.4 通过HDFS WebUI查看数据库与表

  • 查看park数据库在HDFS对应的目录
    在这里插入图片描述
  • 查看student表在HDFS对应的目录
    在这里插入图片描述
  • 查看表记录在HDFS对应的文件
    在这里插入图片描述
  • 查看文件000000_0的内容
    在这里插入图片描述

三、外部表

2.1 什么是外部表

  • Hive外部表是Apache Hive中的一种表类型,它允许用户将已经存在于Hadoop文件系统(如HDFS)中的数据作为Hive表进行查询和分析。与内部表不同的是,删除外部表时,Hive仅删除表的元数据信息,而不删除底层存储的数据文件,这样可以防止意外数据丢失,并支持跨多个表或服务共享数据源。在大数据处理场景下,Hive外部表为用户提供了一种灵活、安全的数据管理方式。

2.2 创建与操作外部表

2.2.1 在虚拟机上建文本文件

  • 在master虚拟机上创建user.txt文件
    在这里插入图片描述

2.2.2 上传文件到HDFS指定目录

  • 在HDFS上创建hiveuser目录
    在这里插入图片描述
  • 将文件user.txt上传到HDFS的/hiveuser目录
    在这里插入图片描述

2.2.3 基于HDFS目录创建外部表

  • 使用CREATE EXTERNAL TABLE命令创建外部表。
  • 基于HDFS的/hiveuser目录创建外部表hiveuser,执行语句:CREATE EXTERNAL TABLE hiveuser (id int, name string, age int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' LOCATION '/hiveuser';
    在这里插入图片描述

2.2.4 查询外部表记录

  • 查询外部表hiveuser全部记录
    在这里插入图片描述
  • 查询19岁以上的记录
    在这里插入图片描述

2.2.5 在MySQL里查看hive元数据信息

  • 查看park数据库里表的信息(注意:park数据库的DB_ID是2)。
    在这里插入图片描述
  • 内部表:MANAGED_TABLE
  • 外部表:EXTERNAL_TABLE

四、内部表与外部表的区别

3.1 区别体现在删除表

  • 内部表删除时连同HDFS数据一并移除;外部表删除仅剔除元信息,保留HDFS实际数据。

3.2 通过实验进行验证

3.2.1 删除内部表

  • 删除内部表student,执行语句:DROP TABLE student;
    在这里插入图片描述
  • 查看student表对应的目录/user/hive/warehouse/park.db/student是否还存在
    在这里插入图片描述

3.2.2 删除外部表

  • 删除外部表hiveuser,执行语句:DROP TABLE hivesuer;
    在这里插入图片描述
  • 查看hiveuser表对应的目录/hiveuser是否还存在
    在这里插入图片描述

3.2.3 查看MySQL里hive元数据

  • 查看数据库park(其DB_ID是2)里是否还有表记录
    在这里插入图片描述
  • 说明删除了内部表和外部表,其元数据信息都会被删除。

五、总结与展望

  • 总结来说,内部表是Hive的默认表类型,其数据存储在Hive管理的目录下,当删除内部表时,相关HDFS上的数据也会被一并清除。创建和管理内部表的过程包括建表、加载数据以及进行DML操作等步骤。

  • 外部表则为用户提供了更为灵活的数据管理方式,它指向HDFS上已存在的数据目录,删除外部表时仅移除元数据信息而不影响实际数据。在实际应用中,如需与其他系统共享数据源或避免误删重要数据,通常会选用外部表。展望未来使用场景,对于持续接入的外部数据源或需要长期保留的历史数据,合理运用Hive外部表将有助于提高数据处理效率与安全性,但同时需要注意对底层数据文件的维护与管理,防止由于表定义缺失导致的数据无法访问等问题。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea如何从磁盘中应用 下载好的插件流程,安装zip压缩包。

1、将下载的插件文件(通常是一个ZIP文件)复制到IntelliJ IDEA的“plugins”文件夹中。 IDEA版本 2、重启IntelliJ IDEA。 3、在设置窗口中,选择左侧的“Plugins”。 4、选择之前复制到“plugins”文件夹中的插件文件,点击“OK”按…

【新手向】VulnHub靶场MONEYBOX:1 | 详细解析

MONEYBOX:1 安装靶机 作为一名新手,首先要配置好环境,才能进行下一步的操作。 将下载的ova文件导入VirtualBox。 VirtualBox下载地址:https://www.oracle.com/cn/virtualization/technologies/vm/downloads/virtualbox-downloads.html 选择…

JMeter(十六)-JMeter断言

十六、JMeter断言 1.简介 断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式。虽然我们的通过响应断言能够完成绝大多数的结果验证工作,但是JMeter还是为我们提供了适合多个场景的断言元件,辅助我们来…

【数据结构】栈和队列(队列的基本操作和基础知识)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​ 目录 前言 队列 队列的概念和结构 队列的…

【操作系统】虚拟存储器

5.1 虚拟存储器概述 之前介绍的各种存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行。于是,出现了下面这样两种情况: (1) 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全…

【PTA-C语言】实验七-函数与指针I

如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 目录——实验七-函数与指针I 6-1 弹球距离(分数 10)6-2 使用函数输出一个整数的逆序数(分数 10)6-3 使用函数求最大公约数(分数 10)6-4…

用CSDN训练的InsCode AI创作博文:数据治理体系建设

想不想用AI帮我们写方案? 想尝试用CSDN提供的InsCode AI创作助手协助我们进行技术方案的创作,看看效果如何,能不能辅助我们日常的方案编写与创作?以前用ChatGPT也尝试过,但对于专业性更强的内容,还有表现的…

BIOS:计算机中的特洛伊木马

内容概述: 由于主板制造商在计算机启动时用来显示品牌徽标的图像分析组件相关的问题,多个安全漏洞(统称为 LogoFAIL)允许攻击者干扰计算机设备的启动过程并安装 bootkit。x86 和 ARM 设备都面临风险。主板固件供应链安全公司 Bin…

软件工程总复习笔记

软件工程课程复习提纲 文章目录 软件工程课程复习提纲一、基本知识点1. 软件工程的概念及目标2. 软件危机的概念及典型表现3. 瀑布模型的概念及特点4. 快速原型模型的特点5. 螺旋模型的基本思想6. 软件生命周期的概念及划分为哪几个阶段7. 软件需求的定义8. 常见的软件需求获取…

html-css-js移动端导航栏底部固定+i18n国际化全局

需求:要做一个移动端的仿照小程序的导航栏页面操作,但是这边加上了i18n国家化,由于页面切换的时候会导致国际化失效,所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变,不会导致切换后回到默认的语言 2.实现…

R_handbook_作图专题

ggplot基本作图 1 条形图 library(ggplot2) ggplot(biopics) geom_histogram(aes(x year_release),binwidth1,fill"gray") 2 堆砌柱状图 ggplot(biopics, aes(xyear_release)) geom_bar(aes(fillsubject_sex)) 3 堆砌比例柱状图 ggplot(biopics, aes(xyear_rele…

DSL查询语法和RestClient查询文档

目录 DSL查询语法 DLS Query的分类 DSL Query基本语法 全文检索查询 精准查询 地理查询 复合查询 Function Score Query 复合查询 Boolean Query 搜索结果处理 排序 分页 分页 深度分页问题 深度分也解决方案 高亮 RestClient查询文档 快速入门 全文检索查…

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案 当我们使用sudo su切换权限时提示错误: sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set该错误出现原因:是因为/usr/bin/sudo的权限被…

Head First Design Patterns - 观察者模式

观察者模式 观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。观察者模式是一种对象行为型模式。 场景 很多用户都订阅了某一公众号,当该公众号更新时,所以用户都会收到消息…

PyTorch的Tensor(张量)

一、Tensor概念 什么是张量? 张量是一个多维数组,它是标量、向量、矩阵的高维拓展 Tensor与Variable Variable是torch.autograd中的数据类型,主要用于封装Tensor,进行自动求导。 data: 被包装的Tensorgrad: data的梯度&…

2023年终总结|回顾学习Tensorflow、Keras的历程

2023年4月,初探TensorFlow2.0,对比了1.0版本的差异。接着,学习了TensorFlow2.0的常量矩阵、四则运算以及常用函数。学习了数据切割、张量梯度计算、遍历元素、类别索引转换等技巧,并掌握了CNN输出特征图形状的计算方法。 在数据处…

osg::DrawElements*系列函数及GL_QUAD_STRIP、GL_QUADS绘制四边形效率对比

目录 1. 前言 2. osg::DrawElements*系列函数用法说明 3. GL_QUADS、GL_QUAD_STRIP用法及不同点 4. 效率对比 5. 总结 6. 参考资料 1. 前言 利用osg绘制图元,如:三角形、四边形等,一般用osg::PrimitiveSet类。其派生出了很多子类&#…

详解全志R128 RTOS安全方案功能

介绍 R128 下安全方案的功能。安全完整的方案基于标准方案扩展&#xff0c;覆盖硬件安全、硬件加解密引擎、安全启动、安全系统、安全存储等方面。 配置文件相关 本文涉及到一些配置文件&#xff0c;在此进行说明。 env*.cfg配置文件路径&#xff1a; board/<chip>/&…

Hive安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_date&#xff0c;类型为String&am…

sparkstreamnig实时处理入门

1.2 SparkStreaming实时处理入门 1.2.1 工程创建 导入maven依赖 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.12</artifactId><version>3.1.2</version> </dependency> <dependency…