大数据学习-外部表&内部表详解

外部表和内部表区别和实际运用:

前提知识储备:

1、hive存储的数据在hdfs上,建表的时候实际上是在hdfs上创建目录而已。

2、hive的元数据信息实际上是存在于mysql中(通常的做法)

3、访问hive的数据是先访问元数据再根据元数据的地址信息来获取数据

 

    外部表和内部表在建表上的区别就是external(代表的外部表),外部表存储的方式是固定的hdfs路径,表是通过映射的方式访问(load数据到表中),而内部表的访问方式就是一个表和一个hdfs对应。所以在删除外部表的时候,实际上是删除的外部表的元数据信息,但是数据在hdfs上丝毫未动,但是删除内部表,删除的是元数据和所有的hdfs上存储的数据。

对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

 

业务实际运用:

1、在ods层的数据一般建设成外部表的形式,在日志产生的时候以文件的形式落到hdfs

上,然后再通过load语句将外部表和相关的hdfs路径关联起来,这样的话,多个表会以同样的方式来访问同一个hdfs的文件,也就实现了多个表共享数据。

    • 优点:
      • 不会误删数据,删除外部表只会删除表的元数据信息
      • 多个部分公用同一份数据,效率提升、权限可以收敛

2、ods层下面之后的数据使用内部表的形式,一般一个业务线自我建设相关的数据,一个表对应一个hdfs路径就可以了,删表的时候可以把数据直接删掉,就会腾出hdfs空间

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值