使用外表同步 EMR 数据

最近更新时间:2024-03-12 11:27:31

我的收藏

背景说明

在数据仓库的建设中,通常我们使用 Hive 处理原始数据(PB 级别),进行耗时较长的 ETL 工作,再将结果数据(TB 级别)交由准实时的计算引擎(例如腾讯云数据仓库 TCHouse-P)对接 BI 工具,保证报表的准实时展现。
本文介绍了如何将 EMR 上 Hive 的数据通过 COS 导入到腾讯云数据仓库 TCHouse-P的过程。

操作步骤

注意
腾讯云数据仓库 TCHouse-P不支持 ORC、Parquet 等格式,仅支持 CSV 等文本格式及其对应的 GZIP 压缩格式。
腾讯云数据仓库 TCHouse-P 侧导入 COS 数据的效率与文件的个数有一定关系,建议个数为腾讯云数据仓库 TCHouse-P 计算节点个数的 N 倍。
1. 开启 EMR 读写对象存储能力 首先需要保证 EMR 具备读写 COS 的能力,可在创建 EMR 时,勾选开启对象存储。


2. 创建 Hive 本地表并写入数据
create table hive_local_table(c1 int, c2 string, c3 int, c4 string);
insert into hive_local_table values(1001, 'c2', 99, 'c4'),(1002, 'c2', 100, 'c4'),(1003, 'c2', 101, 'c4'),(1004, 'c2', 100, 'c4'),(1005, 'c2', 101, 'c4')
3. 创建 Hive COS 外表
create table hive_cos_table(c1 int, c2 string, c3 int, c4 string)
row format delimited fields terminated by ','
LINES TERMINATED BY '\\n'
stored as textfile location 'cosn://{bucket_name}/{dir_name}';
详细信息可以参考 EMR 文档 使用 Hive 在 COS/CHDFS 中创建库表
4. 将本地数据导入 COS
insert into hive_cos_table select * from hive_local_table;
成功写入后,可以在对应的 COS 目录下看到文件。
5. 在腾讯云数据仓库 TCHouse-P 侧创建 COS 外表
CREATE READABLE EXTERNAL TABLE snova_cos_table (c1 int, c2 varchar(32), c3 int, c4 varchar(32))
LOCATION('cos:// {BUCKET}-{APPID}.cos.{REGION}.myqcloud.com/{PREFIX} secretKey=**** secretId=***')
FORMAT 'csv';
6. 在腾讯云数据仓库 TCHouse-P 侧创建本地表并导入数据
create table snova_local_table(c1 int, c2 text, c3 int, c4 text);
insert into snova_local_table select * from snova_cos_table;