Hive 内表与外表的区别

一、区别

1、创建表结构

①在Hive里面创建一个表:

hive> create table wyp(id int,
    > name string,
    > age int,
    > tele string)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY '\t'
    > STORED AS TEXTFILE;
OK
Time taken: 0.759 seconds

②创建外部表多了external关键字说明以及location ‘/home/wyp/external’

hive> create external table exter_table(
    > id int,
    > name string,
    > age int,
    > tel string)
    > location '/home/wyp/external';
OK
Time taken: 0.098 seconds

创建外部表,需要在创建表的时候加上external关键字,同时指定外部表存放数据的路径(当然,你也可以不指定外部表的存放路径,这样Hive将 在HDFS上的/user/hive/warehouse/文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里)

2. 数据导入和导出

①数据导入

内部表导入数据,数据移动到自己的数据仓库目录下,由hive自己来管理

load data local inpath '/home/wyp/data/wyp.txt' into table wyp;

外部表导入数据:load data local inpath '/home/wyp/data/wyp.txt' into table exter_table;

在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外表中的数据并不是由它自己来管理的;

②数据导出

内部表导出:

数据是从本地文件系统复制到HDFS中/home/hdfs/wyp.txt文件中

外部表导出:

       数据是从本地文件系统复制到HDFS中/home/hdfs/wyp.txt文件中,但是,最后 数据不是移动到外部表的/user/hive/warehouse/exter_table文件夹中(除非你创建表的时候没有指定数据的存放路径)。大家 可以去HDFS上看看,对于外部表,数据是被移动到创建表时指定的目录(本例是存放在/home/wyp/external文件夹中)!

3.删除表

①删除内部表

hive> drop table wyp;
Moved: 'hdfs://mycluster/user/hive/warehouse/wyp' to 
        trash at: hdfs://mycluster/user/hdfs/.Trash/Current
OK
Time taken: 2.503 seconds

②删除外部表

hive> drop table exter_table;
OK
Time taken: 0.093 seconds

在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!

总结:

1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的,而表则不一样; 2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的! 那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏搜云库

HBase-1.3.1 集群搭建 - 报错整理

HBase 启动报错 Waiting for dfs to exit safe mode… 启动 Hadoop 和HBase之后,执行jps命令,已经看到有 H...

1886
来自专栏JAVA技术站

Sqoop的安装与Mysql的数据导入到hdfs框架中

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将...

1321
来自专栏Spark学习技巧

hive安装部署

1、 准备环境 1, 软件准备 Java-- jdk-8u121-linux-x64.tar.gz Hadoop--hadoop-2.7.4.tar.gz (j...

2569
来自专栏Hadoop实操

如何在CDH集群中加入异构设备

在部署CDH集群或者扩容时,会遇到服务器配置不同(CPU、Memory、DISK等)的情况,那我们应该如何加入异构设备,并进行差异化的配置呢?本篇文章主要讲述如...

5039
来自专栏Hadoop实操

CDSW1.3的新功能

前两天Fayson介绍过《CDH5.14和CM5.14的新功能》,与CDH5.14同时发布的还有CDSW1.3,以下我们具体看看CDSW1.3的新功能。

4246
来自专栏加米谷大数据

技术干货 | Hadoop3.0稳定版安装攻略来啦!

第一次安装Apache Hadoop3.0.0是不是状况百出?没关系安装攻略来啦! ? Apache Hadoop 3.0.0在前一个主要发行版本(hadoop...

5119
来自专栏Hadoop实操

如何使用HiBench进行基准测试

1K3
来自专栏恰童鞋骚年

Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我...

2231
来自专栏编程坑太多

跟我一起学docker(16)--单节点mesos集群

1703
来自专栏Hadoop实操

如何将CDH从企业版降级为免费版

在使用CDH企业版时,当License过期后,在CM顶部总是会有一个红色的banner条显示License已过期。我们有时会觉得它影响美观,想要考虑将CDH从企...

7715

扫码关注云+社区

领取腾讯云代金券