对象存储 COS

最近更新时间:2026-05-06 16:28:12

我的收藏

简介

对于已存储于 COS 的 Parquet、CSV 等文件,用户可以在 TCHouse-X 中创建外表直接分析使用。如需提升查询性能,用户还可将外表导入 TCHouse-X 内表。

前置条件

1. 创建 TCHouse-X 实例, 操作指南请参见 实例创建与销毁
2. 创建对象存储 COS 桶、上传文件、获取文件 cosn 路径,操作指南可参阅:
创建存储桶:
上传文件:
获取文件的 cosn 路径:
说明:
cosn 路径为 'cosn://' 前缀 + 复制的路径名。

COS 工具概览:对象存储 > 工具概览

场景1:仅创建外表,不导入数据至 TCHouse-X

前置条件:已完成前置准备。

基于 Parquet、TextFile(CSV/TXT)文件创建外表

可参阅以下建表语法创建外表:
CREATE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]table_name
(col_name data_type
[COMMENT 'col_comment']
[, ...]
)
[PARTITIONED BY (col_name data_type [COMMENT 'col_comment'], ...)]
[SORT BY ([column [, column ...]])]
[COMMENT 'table_comment']
[ROW FORMAT row_format]
[STORED AS file_format]
LOCATION 'cosn://bucket-name/path';

Support DataType:
TINYINT
| SMALLINT
| INT
| BIGINT
| BOOLEAN
| FLOAT
| DOUBLE
| DECIMAL
| STRING
| CHAR
| VARCHAR
| TIMESTAMP
Support DataType for HASH:
SMALLINT
| INT
| BIGINT
| DATE
| CHAR
| VARCHAR
| STRING

Support DataType for VALUE:
BOOLEAN
| TINYINT
| SMALLINT
| INT
| BIGINT
| FLOAT
| DOUBLE
| DECIMAL
| CHAR
| VARCHAR
| STRING
| DATE
如操作时无可用数据,可下载 demo parquet 文件后,上传至 COS。该 demo parquet 文件的建表语句如下:
CREATE EXTERNAL TABLE default.external_item (
i_item_sk INT,
i_item_id STRING,
i_rec_start_date DATE,
i_rec_end_date DATE,
i_item_desc STRING,
i_current_price DECIMAL(7,2),
i_wholesale_cost DECIMAL(7,2),
i_brand_id INT,
i_brand STRING,
i_class_id INT,
i_class STRING,
i_category_id INT,
i_category STRING,
i_manufact_id INT,
i_manufact STRING,
i_size STRING,
i_formulation STRING,
i_color STRING,
i_units STRING,
i_container STRING,
i_manager_id INT,
i_product_name STRING
)
STORED AS PARQUET
LOCATION 'cosn://your-bucket-name/your-file-path';

场景2:创建外表并导入数据至 TCHouse-X 内表

前置条件:已完成前置准备。

Step 1:创建外表

操作步骤与场景1相同,详情请参见 基于 Parquet、TextFile(CSV/TXT)文件创建外表

Step 2:创建内表

如操作时无可用数据,可下载 demo parquet 文件、上传至 COS、创建外表。
若使用该 demo parquet 文件, 则创建内表的建表语句如下:
CREATE TABLE default.inner_item (
i_item_sk INT,
i_item_id STRING,
i_rec_start_date DATE,
i_rec_end_date DATE,
i_item_desc STRING,
i_current_price DECIMAL(7,2),
i_wholesale_cost DECIMAL(7,2),
i_brand_id INT,
i_brand STRING,
i_class_id INT,
i_class STRING,
i_category_id INT,
i_category STRING,
i_manufact_id INT,
i_manufact STRING,
i_size STRING,
i_formulation STRING,
i_color STRING,
i_units STRING,
i_container STRING,
i_manager_id INT,
i_product_name STRING
);

Step 3:写入数据

使用 INSERT INTO ... SELECT ... 方式将数据从外表-自管表查询出来写入内表,推荐在 SQL 前添加/*+engine=batch*/调用离线引擎执行数据写入。
如在 Step 1和 Step 2中使用 demo parquet 文件构建了外表和内表,则写入语句为:
/*+engine=batch*/
insert into inner_item select * from external_item;
说明:
/*+engine=batch*/ 是 TCHouse-X 的优化 Hint,用于调用离线计算引擎,以处理大规模数据的批量导入,推荐在数据迁移和初始化同步时使用。默认资源配置如下:
Executor 节点规格: 2X-Small (4CU)
Executor 节点数量: 1 个
Driver 节点规格: 2X-Small (4CU)
Driver 节点数量: 1 个
如果您需要进一步配置离线计算引擎的资源,可使用 Hint 组合/*+engine=batch, executor_specs=2x-small, executor_count=1, driver_specs=2x-small*/进行配置,其中 executor_specsdriver_specs 可选规格有:
2X-Small (4CU)
X-Small (8CU)
Small (16CU)
Medium (32CU)
Large (64CU)
您可以替换 SELECT * 为特定的列名,或添加 WHERE 子句以实现增量或条件导入。