Hive内部表和外部表的区别

2023-05-16

hive作为基于hdfs的数据仓库,在构建表的时候,会有内部表和外部表,这里介绍两者的异同点。


相同点:
  
              1、他们都是用mysql或者derby作为元数据存储,他们在元数据的组织上是相同的,他们都是用hdfs做实际的数据存储,本身没有

数据存储的功能,需要借助HDFS。

              2、他们都可以在建表的时候指定一个指向HDFS文件夹的路径,如果不指定这个路径,那么默认的hive表中的数据会保存在HDFS上

一个叫做"/user/hive/warehouse"上一个和表名称一样的文件夹中,例如student表则对应路径是/user/hive/warehouse/student。

"/user/hive/warehouse"是一个默认的路径,可以通过hive-site.xml文件来配置。

              3、他们创建成功之后,通过load data inpath '/path/to/xxx' overwrite into table tb_name的方式导入hdfs上的数据到hive数据表

中时,被导的数据会被删除,在hdfs中,相当于移动文件。

              4、在测试的过程中发现,内部表也可以指定hdfs上已经存在的一个目录,这样表一创建就有了数据,这样和外部表表现差不多,只是

在删除表的时候会有差异。



  

图(1)  

            如图所示,在hdfs上/usr/feiy目录下本来有student.txt文件和tbls文件夹,我们成功创建了一个不带location指向的外部表,该表的

数据最终显示是在/user/hive/warehouse/stuex目录下,这验证了第二点。

            我们向stuex表中导入hdfs上/usr/feiy/student.txt的数据之后,发现/usr/feiy/student.txt文件不见了,验证了第三点。

            接下来我们验证内部表的创建过程:


	            
  

图(2)  

           内部表创建也可以指定一个location,这样验证了第二点,最后通过load data inpath导入数据之后,原来的hdfs上的文件就被删除了。验证了第三点。           


异同点:
  

            1、创建表的语句上外部表会有一个external的关键字。

            2、删除表的时候,内部表不仅会删除元数据,还会会将hdfs上对应的目录删除掉,而外部表只是删除了元数据,并不会删除hdfs上的数

据。可以理解为外部表只是建立了一个元数据到hdfs的一个链接,最后删除表的时候,只是将这个链接断开了,而不是连同hdfs文件一起删除。

外部表删除过程:


	
  

图(3)  

            外部表删除之后,他的默认存储数据的目录和文件还存在。

            内部表删除过程:



  

图(4)  

             图(1)中我们通过指定location的方式创建了内部表student,在这里图(4)中我删除表之后,对应在hdfs上的文件夹也删除了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive内部表和外部表的区别 的相关文章

  • snakeyaml自定义pojo写入yml文件时属性字段排序问题

    snakeyaml采用LinkedHashMap保存对象 xff0c 最后写入yml文件的时候 xff0c 可以按照存入的顺序写入yml xff0c 如果采用自定义pojo xff0c 虽然可以写入yml xff0c 但是属性默认是按照字母
  • microsoft store打开加载失败,显示检查连接

    如题所示 xff0c 微软商店 microsoft store打开 xff0c 页面显示空白 xff0c 提示检查连接 xff0c 如下所示 xff1a 这种问题其实是网络设置不正确 xff0c 我们通过控制面板打开 网络和Internet
  • SpringBoot配置静态资源访问办法

    SpringBoot如果是web项目 xff0c 其实默认静态资源是放在resources static 目录下的 这个静态资源其实隐含了一个配置就是spring mvc static path pattern xff0c 如下所示 xff
  • Java服务导致CPU爆表异常排查

    一 前言 之前的博客有提到过面对Tomcat部署的java服务出现内存溢出该如何定位 xff0c 今天来记录下Tomcat部署的java服务出现CPU爆表的事故该如何定位 二 正文 针对Linux系统在处理CPU爆满时会有相关指令可以一步到
  • win10+python3.6+cuda9+pytorch1.1.0安装

    为了让torch可以使用显卡GPU加速 xff0c 需要安装对应版本的cudatoolkit和pytorch 这里我的nvidia显卡驱动是9 1版本 xff0c 只能安装cudatoolkit9 一般支持gpu加速的显卡大部分都是英伟达n
  • vmware虚拟机与树莓派4B安装ubuntu1804 + ros遇到的问题

    如题所示 xff0c 本人在虚拟机上安装ubuntu1804 xff0c 可以很容易安装 xff0c 并且更换系统apt源和ros源 xff0c 然后安装ros xff0c 非常顺利 xff0c 但是在树莓派4B上安装raspiberry系
  • python中Flask项目启动静态资源访问问题

    flask项目启动 xff0c 会监听默认的5000端口 xff0c 这个时候 xff0c 在项目根路径下有一个默认的文件夹static xff0c 是用来存放静态资源的 xff0c 我们启动项目 xff0c 可以直接访问这个目录里面的静态
  • java混淆框架proguard结合springboot项目混淆打包

    java项目一般是打包成jar运行或者作为依赖给第三方使用的 xff0c 有的时候 xff0c 可能不想被别人反编译 xff0c 于是就对关键部分进行混淆 xff0c 让代码变得普通人看不懂的地步 xff0c 很多关键字和变量都是用单个字母
  • java中Runtime.exec()可能带来的命令注入安全问题的解决办法

    我们在使用Runtime getRuntime exec 的时候 xff0c 可以指定一个命令或者脚本 xff0c 让它执行 xff0c 类似于调用系统指令来进行完成一项任务 但是这个方法如果有安全检查 xff0c 它会被报出一个Comma
  • springboot自帶线程池ThreadPoolTaskExecutor使用

    不管是阿里 xff0c 还是华为java开发手册 xff0c 都会有一条建议 xff0c 就是让开发者不要使用Executors去创建线程池 xff0c 而是使用构造函数ThreadPoolExecutor的方式来创建 xff0c 并设置合
  • windows下postgresql安装timescaledb

    timescaledb是一个时序数据库 xff0c 可以创建超表hypertable 它并不是一个独立的数据库 xff0c 它依赖于postgresql xff0c 目前相当于postgresql的一个插件或者扩展 要安装timescale
  • windows下sonarqube+sonar-runner安装记录

    sonarqube是一套代码质量管理工具系统 xff0c sonar runner是一个静态扫描代码的工具 xff0c 它可以把扫描的结果交给sonarqube来管理 这里安装的sonarqube版本比较老旧5 1 2 xff0c 因为我安
  • windows上nacos源码编译安装

    nacos是阿里巴巴旗下的一款类似dubbo的微服务注册与发现中心 xff0c 现在很多地方都在使用这个新的框架作为微服务注册中心 nacos本质还是一个rpc框架 xff0c 但是它更强大 xff0c 它还支持配置管理 这里来学习naco
  • java通过URLClassLoader类加载器加载外部jar

    相信在实际工作中 xff0c 大家可能会遇到这种需求 xff0c 这个jar是外部的 xff0c 并没有添加到项目依赖中 xff0c 只能通过类加载器加载并调用相关方法 这种jar加载 xff0c 其实也简单 xff0c 我们通过普通的UR
  • Java服务调用系统指令、Bat脚本记录

    一 前言 在项目推进过程中偶尔会涉及到调用其它组件或脚本的需求 xff0c 本文重点介绍Java服务调用Bat脚本 系统指令 二 调用Bat脚本 根据需求生成BAT脚本内容文本 xff0c 通过文件流写入到新建的BAT文件中 xff0c 然
  • 蓝桥杯单片机开发板-数码管静态显示

    本次的博客会详细的讲解每一部分的代码 首先放本博客所涉及到的电路结构 上图为M74HC573的所控制的数码管显示电路 下图为74HC138的片选电路 电路的逻辑为 通过74HC138来控制74HC02与非门进行逻辑控制 通过74HC02的输
  • 目标检测框架yolov5环境搭建

    目前 xff0c 目标检测框架中 xff0c yolov5 是很火的 xff0c 它基于pytorch框架 xff0c 集成opencv等框架 xff0c 项目地址 xff1a https github com ultralytics yo
  • java中使用easyexcel框架自定义格式写入excel

    一般的excel示例 xff0c 都是写入列表数据到excel xff0c 格式上有表头 xff0c 内容使用List集合来填充 今天遇到的需求有点不一样 xff0c 它也是需要写入excel xff0c 但是开头的内容并不是列表 xff0
  • easyexcel内容追加与单元格合并

    这里的需求是 xff0c 如果表格不存在 xff0c 则新建表格 xff0c 并填入数据 xff0c 如果表格存在 xff0c 那么就追加内容 xff0c 并且支持单元格合并 内容追加 xff0c 需要分两种方式插入 xff0c 第一种就是
  • opencv-python加载pytorch训练好的onnx格式线性回归模型

    opencv是一个开源的图形库 xff0c 有针对java c 43 43 python的库依赖 xff0c 它本身对模型训练支持的不好 xff0c 但是可以加载其他框架训练的模型来进行预测 这里举一个最简单的线性回归的例子 xff0c 使

随机推荐

  • edm经验1

    edm经验 xff1a 1 lt table border 61 34 0 34 height 61 34 100 34 cellpadding 61 34 0 34 cellspacing 61 34 0 34 style 61 34 b
  • hive2.0.0安装(配合hadoop2.6.0)

    一 前提条件 安装了Hadoop2 6 0 xff0c 并且配置了相关环境变量 jdk安装 xff0c 免密登录设置 xff0c 环境变量设置 JAVA HOME JRE HOME CLASSPATH PATH 二 安装配置 1 下载hiv
  • mysql删除无主键表中重复记录(只保留一条记录)

    考虑多条语句变通的办法 mysql gt span class hljs operator span class hljs keyword select span span class hljs keyword from span x us
  • redhat7安装openstack(juno版/附所需文件)

    这种方式使用自己制作的yum源安装openstack allinone xff0c 基本一装一个准 xff0c 不会出差错 xff0c 适合初学者安装 一 使用vmware安装redhat7操作系统 百度盘地址https pan baidu
  • win7部署kafka_2.11

    kafka作为开源的分布式消息通信框架 xff0c 可以在有jvm的机器上部署 运行 这里介绍在windows7上的部署 kafka内部自带了zookeeper 如果单机简单部署 xff0c 可以不用另外下载部署zookeeper 1 下载
  • 正则表达式驼峰转中(下)划线

    一 驼峰转中划线采用正则来实现可以看如下代码 xff1a span class hljs string 34 marginTop 34 span replace a z A Z span class hljs string 34 span
  • 工作无聊?程序员上班没事做该怎么办!

    作为一名程序员 xff0c 工作强度不稳定是比较正常的 xff0c 忙的时候会埋怨 xff0c 闲的时候会发慌 合理的安排自己的工作也是程序员最基本且最重要的能力 工作不紧张的时候 xff0c 可以好好利用起来充实自己 xff0c 根据自身
  • mysql5.7.x:this is incompatible with DISTINCT

    DISTINCT关键字经常在MySQL中使用 xff0c 在mysql5 7以前的版本中一般没有什么问题 xff0c 但是在5 7以后的版本中会遇到这样的错误 Caused by java sql SQLException Expressi
  • sublime3配置Python编译器快速编译python程序

    本文介绍经常用的sublime编辑器作为PythonIDE时如何快速编译代码并得到执行结果 xff0c 前提是本机已经安装了python xff0c 并加入了环境变量 xff0c 命令行下输入python xff0c 会有如下输出 xff1
  • redhat7通过yum安装mysql5.7.17

    rhel centos系列linux操作系统自身没有mysql的源 xff0c 需要自行下载安装 本文介绍如何安装mysql5 7 x数据库 第一步 xff1a 下载源 root span class hljs variable 64 cl
  • mysql主从复制环境搭建

    所需服务器 xff1a 两台 centos7 linux虚拟机 服务器分配 server 192 168 56 201 client 192 168 56 202 说明 xff1a 使用server做主库服务器client做从库服务器 第一
  • hadoop2.6.0伪分布式环境搭建

    Hadoop作为分布式大数据处理框架在数据处理应用中有广泛的应用 xff0c 本文介绍在Linux环境下搭建hadoop伪分布式集群 xff0c 记录下自己的学习过程 一 虚拟机准备 xff0c 为了减少折腾 xff0c 不建议在windo
  • ubuntu1404单机安装部署openstack-juno

    Redhat上可以很快的使用All in one的方式安装openstack xff0c 先安装packstack 然后通过packstack allinone这条命令 就可以一步安装openstack 最后设置IP和网桥 xff0c 就可
  • ubuntu上利用qemu-kvm创建虚拟机

    kvm是Kernel based Virtual Machine的缩写 xff0c 即基于内核的虚拟机技术 xff0c 运行在具备Intel vt或者AMD V功能的x86平台上 在linux2 6 20之后的版本中kvm成为了linux内
  • Fatal error in launcher: Unable to create process using解决办法

    我的机器是windows7 64位机器 xff0c 本来默认安装了pip命令是9 0 1版本的 xff0c 网上有介绍说可以安装1 5 6版本 我考虑将pip更改为1 5 6版本 xff0c 去官网下载一个whl的文件 xff0c 利用pi
  • openstack-install-ubuntu-single说明

    ubuntu1404单机安装部署openstack juno值得注意的地方 xff0c 这里说明一下 先来说说openstack组件 keystone gt 认证组件glance gt 镜像组件 xff0c 负责管理虚拟机镜像nova gt
  • hive自定义函数UDF

    Hive自定义函数 UDF xff0c 可以帮助用户轻松实现在hql语句中展现自定义查询结果 这里以一个简单的连接函数来实现用户自定义函数 xff0c 假设表结构如下 xff1a 表中只有两个简单的字段 xff0c id和name 这里实现
  • Oracle 数据误删的恢复措施

    Oracle中 常见的数据删除操作就三种 xff0c truncate xff0c drop xff0c delete xff0c 下面分类说一下如何恢复 Truncate xff1a 该操作执行后 xff0c 保留表结构 xff0c 清空
  • Hive使用入门

    先介绍一些基本的命令 xff1a 1 进入hive命令行 xff0c 这种方式进入之后 xff0c 操作结果展示时带有执行mapreduce的调试信息 xff1b hive service cli 等同于直接输入hive 2 进入hive命
  • Hive内部表和外部表的区别

    hive作为基于hdfs的数据仓库 xff0c 在构建表的时候 xff0c 会有内部表和外部表 xff0c 这里介绍两者的异同点 相同点 xff1a 1 他们都是用mysql或者derby作为元数据存储 xff0c 他们在元数据的组织上是相