Hive外部表 | 每日五分钟学大数据
别的先不说,开门见山说说内部表的特点: Hive 创建内部表时,会将数据移动到数据仓库指向的路径; Hive 创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变; 在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。 传统数据库对表数据验证是schema on write(写时模式),而 Hive 在load时是不检查数据是否符合schema的,hive 遵循的是schema on read(读时模式),只有在读的时候hive才检查、解析具体的数据字段、schema;所以在这样的设计下,Hive支持创建外部表也变得理所应当,我们来看下如何创建一个外部表。 CREATE EXTERNAL TABLE table_name( id STRING , name STRING ) ROW FORMAT DELIMITED LOCATION '/data/my_data.txt' ; 关键字EXTENAL告诉Hive这个表是外部的,而后面的LOCATION...子句则用于告诉Hive数据位于哪个路径下。 然而,我们需要清楚的重要的一点是管理表和外部表之间的差异要比刚开始所看到的小得多。即使对于管理表,用户也是可以知道数据是位于哪个路径下的,因此用户也是可以使用其他工具