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

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

前提知识储备:

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空间

你可能感兴趣的:(大数据学习,Hive学习)