【博学谷学习记录】超强总结,用心分享|大数据之Hive表区分

在学习hive的中,对内外表的理解不是很清晰,Mark一下;
Hive内外表主要体现在load与drop(是否同时删除元数据与数据)的操作上:

创建表:
默认创建的表就是内部表。Hive完全管理表(元数据和数据)的生命周期,当删除表时,它会删除源数据以及表的元数据。

Hive创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变。外部表的数据不是Hive拥有或者管理的,只管理元数据的生命周期。要创建一个外部表,需要使用externel关键字。删除外部表时只会删除元数据,而不会删除实际数据(源数据)。在hive外部(HDFS可视化界面)依然可以访问到实际的数据,但是在hive数据库端查询表时没有结果。

删除表:
Hive删除内部表时,内部表的元数据和数据会一起被删除,同时对于一些hive操作不适应于外部表,比如单个查询语句创建表并向表中插入数据。

Hive删除外部表时,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。创建外部表时,甚至不需要知道外部数据是否存在,可以把创建数据推迟到创建表之后才进行。

选择:内部表与外部表没有太大区别。如果所有的数据都由hive处理,则创建内部表;如果数据的处理由hive和其他工具一起处理,则创建外部表。
总结:
建表时未被external修饰的是内部表,被external修饰的为外部表;内部表数据由hive自身管理,外部表数据由HDFS管理,内部表数据存储位置为hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己指定。删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件不会被删除。对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name),Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不会删除数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值