美文网首页hive技术开发
hive内部表与外部表

hive内部表与外部表

作者: yanzhelee | 来源:发表于2017-08-20 21:53 被阅读0次

hive内部表与外部表

hive的内部表与外部表之间的区别

区别 创建表过程 删除表过程
内部表 会将数据移动到数据仓库指向的路径 元数据和实际数据一起删除
外部表 仅记录数据所在的路径,不会对数据的位置坐任何改变 只删除元数据,不删除实际数据,相对比较安全。

传统数据库和hive之间的区别

传统数据库对表的验证是schema on write(写时模式),而hive在load时是不检查数据是否是符合schema的,hive遵循的是schema on read(读时模式),只有在读的时候才检查、解析具体的数据字段、schema。

内部表概念

在hive中默认情况创建一个表的语句是:

hive>create table inner_table(name string) row format delimited
hive>fields terminated by '\t'
hive>lines terminated by '\n'
hive>stored as textfile;

这样创建的表是一种内部表,hdfs上会创建相应的文件夹,如果在其中上传数据的话,数据就会保存在对应的文件夹下,当删除这个表时,在此文件夹下的所有数据也会删除,内部表的特点之一就是删除表的时候会把对应的文件也一并删除。
大数据场景下,hive处理的数据往往是非常巨大的,特点是一次上传,多次使用,往往是多个人都会使用到,如果轻易被删除的话,是非常危险的,为了避免对数据的误删,出现了外部表。

外部表概念

在创建外部表的时候,指定external关键字,这样创建的表就是外部表。

创建方式一(不指定存放目录)

这是默认创建外部表,数据存放在默认的hdfs相应的目录下。

hive>create external table outer_talbe(name string) row format delimited
hive>fields terminated by '\t'
hive>lines terminated by '\n'
hive>stored as textfile;

创建方式二(指定存放目录)

hive>create external table outer_talbe(name string) row format hive>delimited
hive>fields terminated by '\t'
hive>lines terminated by '\n'
hive>stored as textfile
hive>location 'hdfs_folder';

演示外部表删除后,其数据是否会被删除

hive>create external table outter_table(name stirng);
hive>drop table outter_table;
hive>dfs -ls -R /;

注意
删除外部表后再次建立一个内部表,其表名与被删除的表名相同的话,它还是会被关联到hdfs上相同的路径下,这时如果再删除这个表的话,那么数据就会被删除,因为此时的表是一个内部变,数据会随着表的删除而删除。

hive如何查看是外部表还是内部表

方式一

进入hive,执行```describe extended tablename;'''查看表的详细信息。
如果是外部表,在详细信息的最后一行,会输出tableType:EXTERNAL_TABLE。
如果是内部表,则会显示tableType:MANAGD_TABLE。

方式二

在hive中执行desc formatted tablename;可以查看表的格式和详细的信息,这里可以得到Table Type也可以得到表的location。根据Table Type可以知道表是内部表还是外部表。

总结

在团队开发中,在hdfs上存放重要数据时不要使用内部表,都是使用外部表关联数据。

参考博文

http://blog.csdn.net/wisgood/article/details/17186139

http://blog.chinaunix.net/uid-77311-id-4586440.html

http://blog.csdn.net/qq_31382921/article/details/53083201

相关文章

  • hive内部表与外部表

    hive内部表与外部表 hive的内部表与外部表之间的区别 传统数据库和hive之间的区别 传统数据库对表的验证是...

  • Hive框架基础(二)

    * Hive框架基础(二) 我们继续讨论hive框架 * Hive的外部表与内部表 内部表:hive默认创建的是内...

  • hdfs,hive大数据的存储管理和显示管理

    1.Hive中内部表和外部表及其对应的hdfs路径 1.1 Hive内部表和外部表的区别 Hive 创建内部表时,...

  • 案例详解__HIVE中内部表、外部表、分区表和分桶表

    目录一、Hive建表语法二、内部表外部表三、分区表四、分桶表 Hive在建表时可指定内部表、外部表、分区表和分桶表...

  • HIVE

    基础命令 基本DDL 内部表与外部表的区别 Hive 创建内部表时,会将数据移动到数据仓库指向的路径; Hive ...

  • Hive

    一:Hive 默认存储在hdfs上,分为内部表与外部表 内部表删除时数据与元数据均删除 外部表删除时则只删除元数...

  • HIVE

    HIVE内部表与外部表的区别,以及各自使用与那种环境?Hive与传统数据库的区别? Hiverc文件? Hive分...

  • hive 建表方式及参数详解

    Hive 表简单介绍    hive中有两种表:外部表和内部表(managed and external)。可以通...

  • hive外部表分区

    外部表和内部表 内部表:数据由hive自身管理 存储在hive指定的hdfs目录中 删除会删除数据本身外部表(ex...

  • 2021-01-06 周报

    Hive内部表与外部表的区别https://zhuanlan.zhihu.com/p/109990472[http...

网友评论

    本文标题:hive内部表与外部表

    本文链接:https://www.haomeiwen.com/subject/qirqdxtx.html