首页 > 其他分享 >hive:外部表和内部表#重要!!!!!!!!!!!!!!!!

hive:外部表和内部表#重要!!!!!!!!!!!!!!!!

时间:2024-11-04 20:44:37浏览次数:4  
标签:COMMENT 内部 删除 外部 收件箱 -- hive Hive 手机

这里写目录标题

hive:外部表和内部表

--------------------------------------------DDL 建表语句:内部表和外部表---------------------------------------------------
/*
    面试题:内部表和外部表的区别是什么?
        1:建表格式不同
            内部表:直接创建即可,默认创建不指定就是内部表 (管理表)
            外部表:建表的时候需要增加关键字 external
            例如:  create table 表名;          内部表
                   create 【external】 table 表名; 外部表
        2:权限不同,是否会删除源数据
            内部表:也称之为管理表,删除内部的时候,不仅会删除元数据(Hive中查不到),还会删除源数据(HDFS中查不到)
            外部表:只会删除元数据(Hive中查不到了),不会删除源数据(HDFS中还在)

        细节:
            1:如果某一个文件想持久存储(除了hive框架要是用,可能spark也要用),建Hive的外表表
            2:如果某一个HDFS随着Hive表的删除而删除,就是用内部
*/
use day05;
show TABLES;

-- 1:建表   内部表?为什么? 没有指定external关键字
CREATE  table t_archer_innder(
    id int COMMENT 'ID',
    name string COMMENT '英雄',
    hp_max int COMMENT '最大血量',
    mp_max int COMMENT '最大法力值',
    attack_max int COMMENT '最大物攻',
    defense_max int COMMENT '最大物防',
    atteck_range string COMMENT  '攻击范围',
    role_main string COMMENT '主要定位',
    role_assist string COMMENT '辅助定位'
)COMMENT '射手表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
-- 以\t方式来分割字段

-- 2:查询表数据
SELECT  * from t_archer_innder;

-- 3:查看表的字段 (发现中文注释是乱码)
desc t_archer_innder;
desc formatted t_archer_innder; -- 查看表的详细信息  Table Type:  MANAGED_TABLE


--4:上传数据文件  web端,找到表的路径 上传
-- /user/hive/warehouse/day05.db/t_archer_innder

-- 5:删除内部表
DROP  table t_archer_innder;  
-- 6:验证:
-- 	查看9870 /user/hive/warehouse/day05/t_archer_innder下的源文件
--  查看mysql数据库hive3数据库下的TBLS数据表中的元数据信息

show tables;

-- 验证外部表
-- 1: 建表的时候加上关键字EXTERNAL ,即创建外部表
CREATE EXTERNAL  table t_archer_outer(
    id int COMMENT 'ID',
    name string COMMENT '英雄',
    hp_max int COMMENT '最大血量',
    mp_max int COMMENT '最大法力值',
    attack_max int COMMENT '最大物攻',
    defense_max int COMMENT '最大物防',
    atteck_range string COMMENT  '攻击范围',
    role_main string COMMENT '主要定位',
    role_assist string COMMENT '辅助定位'
)COMMENT '射手表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

-- 2:上传文件
   讲义&软件包&测试数据\02_测试数据\测试数据\hero\archer.txt

-- 3:查找表
SELECT  * FROM  t_archer_outer;

-- 4:查看表详情信息   table type :EXTERNAL_TABLE
desc FORMATTED  t_archer_outer;

-- 5:删除外部表
DROP  TABLE  t_archer_outer;  -- 只删除元数据,不会删除源数据

-- 6:验证:
-- 	查看9870 /user/hive/warehouse/day05/t_archer_outer下的文件
--  查看mysql数据库hive3数据库下的TBLS数据表中的元数据信息


-- 7:思考: 如果我把外部表删了,又重新创建外部,请问:里面之前的数据还在吗 ?
-- 答案:如果表结构、切割方式、表的存储、表名等信息不发生改变,则创建出来该表后,默认就有之前的数据

举例1

内部表:手机里的自带相册应用

想象一下,你的手机里有一个自带的相册应用,这就好比是Hive内部表。

  • 建表格式
    • 手机出厂时,这个相册应用就已经安装好在手机系统里了,不需要你额外去做什么特别的设置或者标注来让它存在,就如同在Hive里创建内部表,直接创建就行,默认情况下创建出来的就是内部表,它是手机系统自带的、属于手机内部管理的一部分功能。
  • 权限及数据处理
    • 假如有一天,你觉得手机相册里某一组照片(比如某次旅行拍的照片)你不再想要了,你在手机相册应用里选择删除这组照片。当你执行删除操作后,不仅手机相册应用里关于这组照片的缩略图、拍摄时间、地点等记录信息(相当于Hive中的元数据,在相册应用里就看不到这组照片的相关信息了)会被删除,而且手机存储里实际存放这组照片的文件(相当于HDFS中的源数据,在手机存储里原本存放这组照片的位置也找不到它们了)也会被删除掉。也就是说,一旦从这个手机自带相册(内部表)里删除了照片,这些照片在整个手机的存储和相册管理体系(Hive及相关存储环境)里就完全消失了,好像从来没存在过一样。

外部表:云盘里存储照片的文件夹

现在再想象一下,你还在某个云盘服务上注册了账号,并在云盘里创建了一个专门用来存储照片的文件夹,这就类似于Hive外部表。

  • 建表格式
    • 当你在云盘里创建这个文件夹时,你是特意去云盘的操作界面进行创建的,而且你知道这个文件夹是独立于手机自带相册之外存在的,你可能还会给它起个特别的名字或者设置一些特定的权限(就如同在创建表时要加上external关键字表明是外部表,让它区别于手机自带相册这种自带的、默认的存储方式)。
  • 权限及数据处理
    • 假如有一天,你在手机相册应用里不想再显示这个云盘文件夹里照片的相关信息了(相当于在Hive中删除外部表的元数据),你只是在手机相册应用里把和这个云盘文件夹相关的连接或者显示设置去掉了(只删除了Hive中的元数据),但是这个云盘里的照片文件夹本身依然好好地存在于云盘服务器上(HDFS中的源数据不会被删除),里面的照片依然可以通过云盘的网页端或者其他设备登录云盘去访问、查看和使用。而且,如果之后你又想在手机相册应用里重新显示这个云盘文件夹的相关信息(重新创建同名同结构等的外部表),只要这个云盘文件夹本身的存储结构、照片的存储格式、文件夹的名字等(相当于表结构、切割方式、表的存储、表名等信息不发生改变)都没有变化,那么当你再次在手机相册应用里设置好相关连接和显示设置后,里面原来存放的照片(相当于之前的数据)还是可以正常显示和使用,就如同在Hive里重新创建外部表后能继续使用之前的数据一样。

这样通过手机自带相册和云盘文件夹的例子,是不是对Hive内部表与外部表的区别更加直观形象地理解了呢?

举例2

好的,以下是一组全新的、更加直观形象的例子来解释Hive内部表与外部表的区别,希望能让你彻底明白哦。

内部表:手机自带的短信收件箱

想象一下,你的手机自带了一个短信收件箱,这就好比是Hive内部表。

  • 建表格式

    • 手机出厂时,短信收件箱就已经内置在手机系统里了,它是手机整体功能的一部分,不需要你额外去做什么特别的设置或者安装步骤来让它存在,就如同在Hive里创建内部表,直接创建就行,默认创建出来的就是内部表,是手机系统内部管理短信存储的常规方式。
  • 权限及数据处理

    • 假如有一天,你决定删除收件箱里的某几条短信,当你在手机上操作删除这些短信后,不仅手机短信应用里关于这些短信的发送者、接收时间、内容预览等记录信息(相当于Hive中的元数据,在短信应用里就看不到这些短信相关的信息了)会被删除,而且手机存储里实际存放这些短信内容的文件(相当于HDFS中的源数据,在手机存储里原本存放这些短信内容的位置也找不到它们了)也会被删除掉。也就是说,一旦从这个手机自带的短信收件箱(内部表)里删除了短信,这些短信在整个手机的短信管理体系(Hive及相关存储环境)里就完全消失了,好像从来没在这个收件箱里放过一样。

外部表:电子邮箱收件箱

现在想象一下,你还注册了一个电子邮箱,这个电子邮箱的收件箱就类似于Hive外部表。

  • 建表格式

    • 当你注册电子邮箱时,你是特意去邮箱服务提供商的网站或者应用上进行注册操作的,而且你知道这个邮箱收件箱是独立于手机自带短信收件箱之外存在的,你可能还会设置一些特定的邮箱账号、密码等(就如同在创建表时要加上external关键字表明是外部表,让它区别于手机自带短信收件箱这种自带的、默认的存储方式)。
  • 权限及数据处理

    • 假如有一天,你在手机上不想再显示这个电子邮箱收件箱的信息了(相当于在Hive中删除外部表的元数据),你只是在手机上把和这个电子邮箱相关的应用或者设置去掉了(只删除了Hive中的元数据),但是这个电子邮箱本身依然好好地存在于邮箱服务提供商的服务器上(HDFS中的源数据不会被删除),里面的邮件依然可以通过电脑端或者其他设备登录邮箱去访问、查看和使用。而且,如果之后你又想在手机上重新显示这个电子邮箱收件箱的信息(重新创建同名同结构等的外部表),只要这个电子邮箱本身的设置、邮件的存储格式、收件箱的名字等(相当于表结构、切割方式、表的存储、表名等信息不发生改变)都没有变化,那么当再次在手机上设置好相关连接和显示设置后,里面原来存放的邮件(相当于之前的数据)还是可以正常显示和使用,就如同在Hive里重新创建外部表后能继续使用之前的数据一样。

通过手机自带的短信收件箱和电子邮箱收件箱的例子,你现在对Hive内部表与外部表的区别是不是有更直观形象的理解了呢?

标签:COMMENT,内部,删除,外部,收件箱,--,hive,Hive,手机
From: https://blog.csdn.net/weixin_74002941/article/details/143493532

相关文章

  • 信息安全与ISO 27001:内部稽核必备的硬盘抹除方案
    抹除机需求案例(记录用)葡眾(User)向歐力士(SI)租賃電腦,租期為三年。租賃期間大世科提供三年保固。租期結束前,因應內部稽核需符合ISO27001標準,因此需要抹除機來處理資料安全問題。歐力士租賃電腦的產品來自大世科電腦代理商,他們與大世科合作,透過買斷方式取得電腦設備,但由大世......
  • Hive操作基础(入门篇)
    Hive执行流程Hive架构MetaStore三种服务模式内嵌模式:  优点:配置简单hive命令直接可以使用  缺点:不适用于生产环境,derby和Metastore服务都嵌入在主HiveServer进程中,一个服务只能被一个客户端连接(如果用两个客户端以上就非常浪费资源),且元数据不能......
  • Java--内部类
    在外部类中,内部类定义位置与外部类成员所处的位置相同,因此称为成员内部类1.1 实例内部类即未被static修饰的成员内部类publicclassOutClass{privateinta;staticintb;intc;publicvoidmethodA(){a=10;......
  • 超详细解读:成员内部类、静态内部类、局部内部类和匿名内部类
            内部类(InnerClass)是Java中一种特殊的类,它定义在另一个类的内部。内部类(四种内部类)可以访问其外部类(即包含它的类)的所有成员(属性和方法),包括私有成员,因为内部类作为类的五大成员(属性、方法、构造器、代码块、内部类)之一相当于外部类的一部分,因此它有权访问外部......
  • 公司用什么软件来监控电脑?2024年4款公司内部电脑监控软件精选推荐
    公司内部电脑的安全与效率管理成为企业不可忽视的重要任务。电脑监控软件作为一种有效的管理工具,能够帮助企业实时监控员工电脑使用情况,提升工作效率,并保障数据安全。以下是2024年四款值得推荐的公司内部电脑监控软件,它们各具特色,能够满足不同企业的需求。1.安企神安......
  • 无法显示页面,因为发生内部程序错误
    问题原因:web.config 文件在Windows操作系统云虚拟主机的子目录或二级目录下存在时,可能会导致内部程序错误,因为云虚拟主机不支持这些目录中的 web.config 文件。解决步骤:重命名 web.config 文件:进入子目录或二级目录。将 web.config 文件重命名为其他名称,例......
  • 基于STM32F407系列外部中断学习
    STM32外部中断学习1)外部中断概述1.外部中断描述在日常生活中,例如早上在睡觉被闹钟吵醒,你去关闭闹钟就属于中断事件。在主函数里的代码是由CPU运行的,CPU在执行过程中突然发生了异常事件(中断),CPU必须暂停当前的工作(设下断点),然后跑去处理这个异常事件的函数(中断服务函数),处理......
  • windows:家庭版 'gpedit.msc' 不是内部或外部命令,也不是可运行的程序
    说明:window10家庭版不支持gpedit.msc命令解决:联网安装所需依赖软件新建bat脚本@echooffsetfileName=policy.txt::获取依赖的软件信息dir/b%systemroot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum>%fileName%dir/b%syste......
  • datax抽取mongodb数据到hive
    {"job":{"setting":{"speed":{"channel":3},"errorLimit":{"record":0,"percentage":0.02}},"content":[{"reader":{"name":"mongodbrea......
  • 通过在 DIM 接入一个外部电容,使得启动时 DIM 端电压缓慢上升,这样 LED 的电流也缓慢上
    AP5165是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从6V到30V,输出电流可调,最大可达1.2A。根据不同的输入电压和外部器件,AP5165可以驱动高达数十瓦的LED。AP5165内置功率开关,采用高端电流采样设置LED平均电流,通过DIM引脚可以接受模拟......