【转】Hive内部表、外部表

hive内部表、外部表区别自不用说,可实际用的时候还是要小心。

1. 内部表:

[sql] view plaincopyprint?

  1. create table tt (name string , age string) location ‘/input/table_data‘;

此时,会在hdfs上新建一个tt表的数据存放地,例如,笔者是在 hdfs://master/input/table_data

上传hdfs数据到表中:

[sql] view plaincopyprint?

  1. load data inpath ‘/input/data‘ into table tt;

此时会将hdfs上的/input/data目录下的数据转移到/input/table_data目录下。

删除tt表后,会将tt表的数据和元数据信息全部删除,即最后/input/table_data下无数据,当然/input/data下再上一步已经没有了数据!

如果创建内部表时没有指定location,就会在/user/hive/warehouse/下新建一个表目录,其余情况同上。

注意的地方就是:load data会转移数据!

2. 外部表:

[sql] view plaincopyprint?

  1. create external table et (name string , age string);

此时,会在/user/hive/warehouse/新建一个表目录et

[sql] view plaincopyprint?

  1. load data inpath ‘/input/edata‘ into table et;

此时会把hdfs上/input/edata/下的数据转到/user/hive/warehouse/et下,删除这个外部表后,/user/hive/warehouse/et下的数据不会删除,但是/input/edata/下的数据在上一步load后已经没有了!数据的位置发生了变化!本质是load一个hdfs上的数据时会转移数据!

3. 其他:

(1)加上location用法一样,只不过表目录的位置不同而已。

(2)加上partition用法也一样,只不过表目录下会有分区目录而已。

(3)load data local inpath直接把本地文件系统的数据上传到hdfs上,有location上传到location指定的位置上,没有的话上传到hive默认配置的数据仓库中。

时间: 2024-08-03 08:36:27

【转】Hive内部表、外部表的相关文章

hive 四种表,分区表,内部,外部表,桶表

Hive四大表类型内部表.外部表.分区表和桶表 一.概述 总体上Hive有四种表:外部表,内部表(管理表),分区表,桶表.分别对应不同的需求.下面主要讲解各种表的适用情形.创建和加载数据方法. 二.具体内容 1.内部表 创建内部表和加载数据 create table emp_inner(   empno int,   ename string,   job string,   mgr int,   hiredate string,   sal double,   comm double,   d

hive内部表与外部表区别

1.创建内部表与外部表的区别是什么? 2.external关键字的作用是什么? 3.外部表与内部表的区别是什么? 4.删除表的时候,内部表与外部表有什么区别? 5.load data local inpath '/home/wyp/data/wyp.txt' into table wyp;的过程是什么样子的? 6.磁盘,hdfs,hive表他们之间的过程是什么样子的? 相信很多用户都用过关系型数据库,我们可以在关系型数据库里面创建表(create table),这里要讨论的表和关系型数据库中的表

HIVE外部表 分区表

HIVE外部表 分区表    外部表        创建hive表,经过检查发现TBLS表中,hive表的类型为MANAGED_TABLE. 在真实开发中,很可能在hdfs中已经有了数据,希望通过hive直接使用这些数据作为表内容.        此时可以直接创建出hdfs文件夹,其中放置数据,再在hive中创建表管来管理,这种方式创建出来的表叫做外部表. #创建目录,上传已有文件        hadoop fs -mkdir /data        hadoop fs -put stude

Hive管理表,外部表及外部分区表的深入探讨

Hive管理表,也叫内部表.Hive控制着管理表的整个生命周期,默认情况下Hive管理表的数据存放在hive的主目录:/user/hive/warehouse/下,并且当我们删除一张表时,这张表的数据也会相应的被删除掉,在文件层面上讲,就是在Hive主目录下的表目录以及目录里面的数据文件都会被删除掉. 管理表能够有效的管理表的数据,但是不利于对数据的分享,同一份数据,我希望既能够指向表A,有能够分享给表B,但是相应的这些表不应该控制数据的生命周期,这种表在Hive里面成为外部表.在创建外部表的时

hive表与外部表的区别

相信很多用户都用过关系型数据库,我们可以在关系型数据库里面创建表(create table),这里要讨论的表和关系型数据库中的表在概念上很类似.我们可以用下面的语句在Hive里面创建一个表: hive> create table wyp(id int, > name string, > age int, > tele string) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY '\t' > STORED AS TEX

hive 分区表、桶表和外部表

1:分区表 图:创建分区表 图:导入数据 图:在HDFS的显示信息 分区字段就是一个文件夹的标识 图:在多列上创建分区 图:导入数据 图:在多列上建立分区后在HDFS上形成的结构信息 把表中的大多数字段建立为分区字段,可行吗?分区不是越多越好,分区越多的话,加载数据的话必须注意分区,那么文件会被控制的非常小,Map的任务数量增多, 计算不一定会快.Hive限定了分区的数量.选用一些查询比较频繁的字段来建立分区,时间字段等. 查询比较频繁,并且不会有很多枚举值的字段,适合作为分区字段.分区字段就是

0035-如何使用Sentry管理Hive外部表(补充)

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看. 1.文档编写目的 本文文档主要讲述如何使用Sentry管理Hive/Impala外部表权限. 内容概述 1.创建测试库及外部表 2.创建角色并授权 3.授权测试 4.测试总结 测试环境 1.操作系统为CentOS6.5 2.CM和CDH版本为5.12.1 3.采用root用户操作 前置条件 1.集群运行正常 2.集群已启用Kerberos且正常使用 3.HDFS/Hive/Impala/Hue服务已与Sentry集成 4.Hive用

hive的两种表

1.内部表 内部表在LOAD数据时,如果使用LOCAL关键字,Hive会把本地文件系统中的数据文件复制到Hive的 /warehouse 目录.反之,则是将HDFS上的数据文件剪切到 /warehouse 目录. Hive在LOAD数据时,并不检查目录中的文件是否符合为表所声明的模式.只有通过SELECT查询返回空值NULL,才能确定不匹配. 内部表删除时,表的元数据(mysql中)和数据文件(hdfs中)都会被删除. create table book (id bigint, name str

hive与hbase关联表的创建,外表方式

1.在Hive里面创建一个表: hive> create table wyp(id int,    > name string,    > age int,    > tele string)    > ROW FORMAT DELIMITED    > FIELDS TERMINATED BY '\t'    > STORED AS TEXTFILE;OKTime taken: 0.759 seconds 2.这样我们就在Hive里面创建了一张普通的表,现在给这

Hive的数据库和表

本文介绍一下Hive中的数据库(Database/Schema)和表(Table)的基础知识,由于篇幅原因,这里只是一些常用的.基础的. Hive的数据库和表 先看一张草图: Hive结构 从图上可以看出,Hive作为一个"数据库",在结构上积极向传统数据库看齐,也分数据库(Schema),每个数据库下面有各自的表组成. 1.  Hive在HDFS上的默认存储路径 Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore