文件外部表
文件外部表 (File External Table) 是一种特殊的外部表。您可以通过文件外部表直接查询外部存储系统上的 Parquet 和 ORC 格式的数 据文件,无需导入数据。同时,文件外部表也不依赖任何 Metastore。StarRocks 当前支持的外部存储系统包括 HDFS、Amazon S3 及其他兼容 S3 协议的对象存储、阿里云对象存储 OSS 和腾讯云对象存储 COS。
该特性从 StarRocks 2.5 版本开始支持。
提示
自 v3.1 起,StarRocks 支持使用 INSERT INTO SELECT 语句和 FILES 表函数直接导入云存储或 HDFS 中的文件,无需提前创建 External Catalog 或文件外部表。除此之外,FILES() 支持自动推断 Table Schema,大大简化了导入过程。
使用限制
- 当前仅支持在 default_catalog 下的数据库内创建文件外部表,不支持 external catalog。您可以通过 SHOW CATALOGS 来查询集群下的 catalog。
- 仅支持查询 Parquet、ORC、Avro、RCFile、或 SequenceFile 格式的数据文件。
- 目前仅支持读取目标数据文件中的数据,不支持例如 INSERT、DELETE、DROP 等写入操作。
前提条件
创建文件外部表前,您需要在 StarRocks 中进行相应配置,以便集群能够访问数据文件所在的外部存储系统。具体配置步骤和 Hive catalog 相同 (区别在于无需配置 Metastore)。详细信息参见 Hive catalog - 准备工作。
创建数据库 (可选)
连接到 StarRocks 集群后,您可以在当前已有的数据库下创建文件外部表;也可以创建一个新的数据库来管理文件外部表。您可以使用 SHOW DATABASES 来查询集群中的数据库,然后执行 USE <db_name>
切换到目标数据库。
创建数据库的语法如下。
CREATE DATABASE [IF NOT EXISTS] <db_name>
创建文件外部表
语法
切换到目前数据库后,您可以使用如下语法创建一个文件外部表。
CREATE EXTERNAL TABLE <table_name>
(
<col_name> <col_type> [NULL | NOT NULL] [COMMENT "<comment>"]
)
ENGINE=FILE
COMMENT ["comment"]
PROPERTIES
(
FileLayoutParams,
StorageCredentialParams
)
参数说明
参数 | 必选 | 说明 |
---|---|---|
table_name | 是 | 文件外部表名称。命名要求如下:
|
col_name | 是 | 文件外部表的列名。列名大小写不敏感,需和数据文件中的保持一致,列的顺序无需保持一致。 |
col_type | 是 | 文件外部表的列类型,需要根据列类型映射来填写。 |
NULL | NOT NULL | 否 | 文件外部表中的列是否允许为 NULL。
|
comment | 否 | 文件外部表的列备注。 |
ENGINE | 是 | ENGINE 类型,取值为 file。 |
comment | 否 |