Hive创建内部表时,会将数据移动到数据仓库指向的路径。创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变,在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。需要注意的是传统数据库对表数据验证是写时模式,而Hive在load时是不检查数据是否符合schema的,Hive遵循的是读时模式,只有在读的时候Hive才检查解析具体的数据字段。
Hive创建内部表时,会将数据移动到数据仓库指向的路径。创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变,在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。需要注意的是传统数据库对表数据验证是写时模式,而Hive在load时是不检查数据是否符合schema的,Hive遵循的是读时模式,只有在读的时候Hive才检查解析具体的数据字段。