内部表和外部表就一个区别:
删除内部表时,会删除内部表的元数据信息和数据
删除外部表时,仅仅删除外部表的元数据信息
几个误区
hive.metastore.warehouse.dir【默认:/user/hive/warehouse】定义的目录只是 default 库映射的路径
若在default库中创建表,而且没有指定location,那么该表的映射路径为:/user/hive/warehouse/表名
创建数据库
create database 库名 【location ‘hdfs_path’】
- 若不指定location,那么数据库的映射路径为:/user/hive/warehouse/库名.db
- 若指定location,那么数据库的映射路径为:hdfs_path
创建表
-
不指定location
- 不管是外部表还是内部表,你在哪个库下创建表,那么表名目录就会创建在该库映射的路径下,即表的映射路径默认为:库映射路径/表名
-
指定location
- 不管是外部表还是内部表,表的映射路径为:location 指定的路径
-
不管内部表还是外部表,加载数据时,均会从数据文件所在目录,把数据文件剪切到表的映射路径
-
记住一点:无论内部表还是外部表,数据表的数据文件一定放在数据表的映射路径下
内部表与外部表的应用场景
- 公共的表,使用外部表
- 个人使用的表,使用内部表