文档中心>腾讯云数据仓库 TCHouse-P

外表读写 COS 使用说明

最近更新时间:2025-03-05 15:08:32

我的收藏

概述

腾讯云数据仓库 TCHouse-P 支持通过创建外表的方式读写 HDFS/COS/融合桶上的外表数据文件进行数据分析。本文主要介绍其使用方法。在使用之前确保已有 HDFS/COS/融合桶的用户账户并且网络能够联通。

创建 hdfs_fdw 插件

CREATE EXTENSION hdfs_fdw;

创建 SERVER

根据实际情况选择以下三种 Server 中的一种创建。

创建 COS Server

CREATE SERVER $cos_server名
FOREIGN DATA WRAPPER hdfs_fdw
OPTIONS (
address 'cos://$bucketname',
appid '$appid',
access_keyid '$ak',
secret_accesskey '$sk',
region '$region',
client_type 'cos'
);

创建 HDFS Server

CREATE SERVER $hdfs_server名
FOREIGN DATA WRAPPER hdfs_fdw
OPTIONS (
address 'ofs://xxxxxx.chdfs.ap-guangzhou.myqcloud.com',
appid '$appid',
client_type 'hdfs'
);

创建融合桶 Server

CREATE SERVER $cosn_server名
FOREIGN DATA WRAPPER hdfs_fdw
OPTIONS (
address 'cosn://$bucketname',
appid '$appid',
access_keyid '$ak',
secret_accesskey '$sk',
region '$region',
client_type 'cosn'
);

创建 USER MAPPING

根据实际情况选择以下三种 User Mapping 中的一种创建。
CREATE USER MAPPING FOR $TDSQL-A用户 SERVER $cos_server名; -- 前面创建的 COS Server 的
CREATE USER MAPPING FOR $TDSQL-A用户 SERVER $hdfs_server名; -- 前面创建的 HDFS Server 的
CREATE USER MAPPING FOR $TDSQL-A用户 SERVER $cosn_server名; -- 前面创建的融合桶 Server 的

pg 读 COS

创建非分区外表

表指定文件格式需要和远程读取的文件格式一致。

创建 CSV 格式的表

CREATE FOREIGN TABLE test_csv(id int, name TEXT)
SERVER $ServerName
OPTIONS (
FORMAT 'csv',
FOLDERNAME '$数据目录/',
distribute 'shard'
);

创建 TEXT 格式的表

CREATE FOREIGN TABLE test_text(id int, name TEXT)
SERVER $ServerName
OPTIONS (
FORMAT 'text',
DELIMITER '$列分隔符',
FOLDERNAME '$数据目录/',
distribute 'shard'
);

创建 ORC 格式的表

CREATE FOREIGN TABLE orc_table(a bigint, b text, c float)
SERVER $ServerName
OPTIONS (
FORMAT 'orc',
FOLDERNAME '$数据目录/',
distribute 'shard'
);

创建分区外表

当 Hive 建表语句为以下时:
CREATE FOREIGN TABLE login_logs_orc(l_id text,l_loginName text,l_date text,year text,month text)
SERVER cosn_server
OPTIONS (
FORMAT 'orc',
FOLDERNAME '$数据目录/',
distribute 'shard',
PARTITION 'year,month'
);

查询外表并将数据导入内部表

insert into 内部表 select * from 外部表;

pg 写 COS

创建写的外部表

根据实际情况选择以下三种中的一种创建:
create foreign table f_csv(f1 int, f2 int)
server cos_server
options(FORMAT 'csv', DELIMITER ',', FOLDERNAME '/csv/', distribute 'shard') WRITE ONLY;

create foreign table f_txt(f1 int, f2 int)
server cos_server
options(FORMAT 'text', DELIMITER ',', FOLDERNAME '/txt/', distribute 'shard') WRITE ONLY;

create foreign table f_orc(f1 int, f2 int)
server cos_server
options(FORMAT 'orc', FOLDERNAME '/orc/', distribute 'shard') WRITE ONLY;

pg 导入 COS

根据实际情况选择以下三种中的一种:
insert into f_csv select * from 内部表;
insert into f_txt select * from 内部表;
insert into f_orc select * from 内部表;