hive内部表和外部表
内部表
hive的内部表需要加载数据到hive所在的hdfs目录,删除时,hive的元数据和数据文件都会删除。一旦误删,数据恢复非常麻烦。
外部表
hive的外部表不加载数据到hive所在的hdfs目录,删除时,只会删除表结构元数据信息。外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
使用场景
- 每天采集的ng日志和埋点日志,在存储的时候建议使用外部表,因为日志数据是采集程序实时采集进来的,一旦被误删,恢复起来非常麻烦。而且外部表方便数据的共享。在数仓中的ODS层一般使用外部表,防止数据丢失。
- 抽取过来的业务数据,其实用外部表或者内部表问题都不大,就算被误删,恢复起来也是很快的,如果需要对数据内容和元数据进行紧凑的管理, 那还是建议使用内部表。
- 在做统计分析时候用到的中间表,结果表可以使用内部表,因为这些数据不需要共享,使用内部表更为合适。并且很多时候结果分区表我们只需要保留最近n天的数据,如果用外部表的时候删除分区时无法删除分区数据。