Inceptor支持用户创建多种表格形式,其中包括:外部表、分区表、分桶表与临时表。本文将介绍外部表与其应用场景,并将其与内部表从6个方面的区别进行阐述。希望通过阅读该文章,进一步了解外表的特性与实际应用场景,助力您的数据开发。
外表(External table)是一种特殊类型的数据库对象,它定义了一个可读的数据源,但它不是数据库中的表,而是指向一个外部数据源中数据的元数据。外表提供了一种将外部数据文件与数据库相关联的方法,可以在 SQL 查询中像操作普通表一样使用它们。
外表常用于以下场景中:
内部表和外部表最根本的区别在于,是否由 Quark 管理表的全生命周期。如,Quark 管理内部表的元数据以及实际的表数据,而对于外部表,则只管理它的元数据。以下,将会更具体地阐述内部表和外部表的区别。
外部表的建表语句需要被 external 修饰,但是内部表是不需要的。
CREATE EXTERNAL TABLE external_t
(trans_id INT,
acc_num INT,
trans_time DATE,
trans_type STRING,
stock_id STRING,
price DECIMAL,
amount INT)
STORED AS TEXTFILE;
CREATE TABLE t
(trans_id INT,
acc_num INT,
trans_time DATE,
trans_type STRING,
stock_id STRING,
price DECIMAL,
amount INT)
STORED AS TEXTFILE;
--内转外
ALTER TABLE tablename SET TBLPROPERTIES ('EXTERNAL' = 'true');
--外转内
ALTER TABLE tablename SET TBLPROPERTIES ('EXTERNAL' = 'false');
管理内部表的元数据以及表的实际数据。当使用 drop 删除内部表的时候,不但会删除表的元数据,连同其对应的数据(即数据文件),都会被删除。
只管理外部表的元数据,表的实际数据与元数据只是做了一个映射关系,可以借助元数据信息查询到表的实际数据信息。当使用 drop 删除外部表的时候,只有元数据会被删掉,表的实际数据仍然会存放在 hdfs 对应的路径中。
在创建内部表的时候,一般不需要指定数据的存储路径,在创建的时候,会将数据存储在 hdfs 默认的路径中。一般是:/hive/warehouse/数据库名称/表名。
在实际使用中,为了让数据存放更安全,外部表一般会搭配 location 来指定数据的存放目录,如果不使用 location ,将会默认在 /hive/warehouse/数据库名称/表名 路径下建立数据目录。
注意:不论是外部表还是内部表,都能使用 location 指定数据的存放路径的。
由此可以看出:
对比项 | 内部表 | 外部表 |
管理范围 | 元数据、实际的表数据 | 元数据 |
建表语句 | 不需要 external 关键字修饰 | 需要 external 关键字修饰 |
drop 表后果 | 删除元数据和实际的表数据 | 只删除元数据,实际的表数据保留 |
存储路径 | 一般在默认位置存储数据 | 一般搭配 location 指定数据存放位置 |
表结构和分区更改的区别 | 自动同步到元数据 | 需要修复表 |
表名称修改 | location和路径文件一起发生变化 | location和路径文件不变 |
外表作为一种特殊类型的数据库对象,提供将外部数据文件与数据库相关联的途径。常用于Inceptor数据的导入导出场景下。与内表共存在管理范围、建表语句、drop结果、存储路径、表结构与分区更改区别和表名称修改共6个方面的区别。通过阅读该文章,希望您对于外表的特性与应用场景都有更加详细地认识。有关于外表的更多知识,欢迎大家在下方评论区留言讨论。 谢谢
文章参考:点击这里
Inceptor支持用户创建多种表格形式,其中包括:外部表、分区表、分桶表与临时表。本文将介绍外部表与其应用场景,并将其与内部表从6个方面的区别进行阐述。希望通过阅读该文章,进一步了解外表的特性与实际应用场景,助力您的数据开发。
外表(External table)是一种特殊类型的数据库对象,它定义了一个可读的数据源,但它不是数据库中的表,而是指向一个外部数据源中数据的元数据。外表提供了一种将外部数据文件与数据库相关联的方法,可以在 SQL 查询中像操作普通表一样使用它们。
外表常用于以下场景中:
内部表和外部表最根本的区别在于,是否由 Quark 管理表的全生命周期。如,Quark 管理内部表的元数据以及实际的表数据,而对于外部表,则只管理它的元数据。以下,将会更具体地阐述内部表和外部表的区别。
外部表的建表语句需要被 external 修饰,但是内部表是不需要的。
CREATE EXTERNAL TABLE external_t
(trans_id INT,
acc_num INT,
trans_time DATE,
trans_type STRING,
stock_id STRING,
price DECIMAL,
amount INT)
STORED AS TEXTFILE;
CREATE TABLE t
(trans_id INT,
acc_num INT,
trans_time DATE,
trans_type STRING,
stock_id STRING,
price DECIMAL,
amount INT)
STORED AS TEXTFILE;
--内转外
ALTER TABLE tablename SET TBLPROPERTIES ('EXTERNAL' = 'true');
--外转内
ALTER TABLE tablename SET TBLPROPERTIES ('EXTERNAL' = 'false');
管理内部表的元数据以及表的实际数据。当使用 drop 删除内部表的时候,不但会删除表的元数据,连同其对应的数据(即数据文件),都会被删除。
只管理外部表的元数据,表的实际数据与元数据只是做了一个映射关系,可以借助元数据信息查询到表的实际数据信息。当使用 drop 删除外部表的时候,只有元数据会被删掉,表的实际数据仍然会存放在 hdfs 对应的路径中。
在创建内部表的时候,一般不需要指定数据的存储路径,在创建的时候,会将数据存储在 hdfs 默认的路径中。一般是:/hive/warehouse/数据库名称/表名。
在实际使用中,为了让数据存放更安全,外部表一般会搭配 location 来指定数据的存放目录,如果不使用 location ,将会默认在 /hive/warehouse/数据库名称/表名 路径下建立数据目录。
注意:不论是外部表还是内部表,都能使用 location 指定数据的存放路径的。
由此可以看出:
对比项 | 内部表 | 外部表 |
管理范围 | 元数据、实际的表数据 | 元数据 |
建表语句 | 不需要 external 关键字修饰 | 需要 external 关键字修饰 |
drop 表后果 | 删除元数据和实际的表数据 | 只删除元数据,实际的表数据保留 |
存储路径 | 一般在默认位置存储数据 | 一般搭配 location 指定数据存放位置 |
表结构和分区更改的区别 | 自动同步到元数据 | 需要修复表 |
表名称修改 | location和路径文件一起发生变化 | location和路径文件不变 |
外表作为一种特殊类型的数据库对象,提供将外部数据文件与数据库相关联的途径。常用于Inceptor数据的导入导出场景下。与内表共存在管理范围、建表语句、drop结果、存储路径、表结构与分区更改区别和表名称修改共6个方面的区别。通过阅读该文章,希望您对于外表的特性与应用场景都有更加详细地认识。有关于外表的更多知识,欢迎大家在下方评论区留言讨论。 谢谢
文章参考:点击这里