Hive内部表和外部表的区别,以及各自使用的环境?

 

未被external修饰的是内部表(managed table), 被external修饰的为外部表(external table);
区别:
内部表数据由Hive自身管理,外部表数据由HDFS管理;
内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由本身制定;
删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除,数据还在HDFS里面;
内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则须要 修复(MSCK REPAIR TABLE table_name;)
主要体如今load与drop(是否同时删除元数据与数据)的操做上
Hive建立内部表时,会将数据移动到数据仓库指向的路径,hive管理数据的生命周期。
建立外部表时,仅仅记录数据所在的路径,并不会对数据作任何处理。
 
 
选择:
内部表与外部表没有太大区别,若是全部的 数据都用Hive处理,则建立内部表;若是数据的处理须要 hive和其余工具一块儿处理,则建立外部表。
相关文章
相关标签/搜索