中间件速查手册
数据仓库与 OLAPExternal Table

外部表 是什么?

只登记元数据,删表不删数据,多个引擎共享同一份文件

类比:借阅登记,注销借书证不会烧掉书

内部表 vs 外部表

内部表(managed table)的数据归 Hive 管,`drop table` 会连数据一起删;外部表(external table)只删元数据,HDFS 上的文件原封不动。

为什么默认用外部表

数据湖里的文件往往由多个系统写入(Flink、Spark、DataX),Hive 只是其中一个读者。如果建成内部表,某个人手滑 drop 一下,几个 TB 的原始数据就没了。

外部表还方便“一份数据、多套表定义”:同一批 Parquet 文件可以建不同字段映射的表,互不影响。

注意 location

建外部表必须指定 `location`,否则会用默认仓库路径,容易和其他表混在一起。删表后要清理数据,得手动 `hdfs dfs -rm`,这既是保护也是负担。

它出现在这些中间件里

相关问题

相关概念