Hive内部表与外部表

文章目录

    • 0. 查看表元数据信息
    • 1. 内部表
    • 2. 外部表
    • 3. 内外部表差异

0. 查看表元数据信息

  • 使用DESCRIBE FORMATTED tablename,来获取表的元数据描述信息,可以从中看除表的类型。

1. 内部表

  • 内部表是被Hive拥有和管理的托管表(Managed table)。
  • 默认情况下创建的表就是内部表,Hive拥有该表的结构和文件,Hive完全管理表的元数据和数据。
  • 当删除内部表时,会删除数据及表的元数据
    Hive内部表与外部表_第1张图片

2. 外部表

  • 外部表中的数据不是Hive拥有或管理的,只管理表元数据的生命周期。
  • 创建外部表使用EXTERNAL语法关键字。
  • 删除外部表只会删除元数据,而不会删除实际数据。在Hive外部仍可以访问实际数据。
  • 实际场景外部表搭配LOCATION语法指定数据的路径,可以让数据更安全。
	create external table student(
		num int,
		name string
)
	row format delimited
	fields terminated by ','
	location '/stu'  --将表设置在UI目录树中的,根目录下的,stu文件夹中。

3. 内外部表差异

  • 无论内部表还是外部表,Hive都在Hive Metastore中管理表定义、字段类型等元数据信息。
  • 删除内部表,即删除元数据+HDFS中所有数据文件。
  • 删除外部表,只删除元数据。
    Hive内部表与外部表_第2张图片
    不管是内部表还是外部表,默认都是在/user/hive/warehouse,在建表时使用location关键字,指定存储位置在HDFS的任意路径。

你可能感兴趣的:(Hive,hive,hadoop,大数据)