跳到主要内容

简述什么是Hive 管理表和外部表 ?

参考答案:

Hive的管理表和外部表是两种不同类型的表,它们在数据存储、生命周期管理和数据共享等方面存在显著差异。

管理表,也被称为内部表,是Hive在默认情况下创建的表类型。当创建内部表时,Hive会将数据移动到由配置项hive.metastore.warehouse.dir所定义的目录中。这些表或多或少地控制数据的生命周期。需要注意的是,如果删除内部表,不仅会删除表的元数据(metadata),还会删除表数据(data)。

与外部表相比,内部表在某些场景下可能不太方便与其他工具或工作共享数据。例如,当数据由其他工具(如Pig)创建并主要由该工具使用时,如果Hive需要查询这些数据但没有所有权,那么创建一个外部表指向这些数据可能更为合适。

外部表则是被external关键字修饰的表。与内部表不同,创建外部表时Hive仅记录数据所在的路径,并不会移动数据或对其位置做任何改变。此外,当删除外部表时,Hive仅删除表的元数据,而不会删除实际的数据。这种特性使得外部表在某些场景下特别有用,例如当多个部门需要共享和访问同一份原始数据时(如公司的原始日志数据),创建外部表可以确保原始数据不会被意外删除。

总的来说,Hive的管理表和外部表在数据存储和管理的方式上有所不同,选择使用哪种表类型取决于具体的应用场景和需求。