title: PgSQL · 最佳实践 · 从 ODPS 迁移数据到 HybridDB
最近,不少用户在尝试使用 HybridDB 的过程中,询问我们如何把之前在 ODPS 中的数据迁移到 HybridDB。今天就跟大家介绍一种效率较高的方法。
ODPS 和 HybridDB 都是多数据节点组合成的集群架构,这样的架构如果要做到效率较高的数据吞吐,需要驱动数据节点主动推送数据。幸运的是 ODPS 和 HybridDB 都支持用该方式向 OSS 读写数据。于是解决方案来了。
要在 OSS 交换数据,约定数据格式是必要的。调查发现,ODPS 支持向 ODPS 写文本格式的数据(TEXT/CSV),HybridDB 也支持读取文本格式的数据。
下面通过一个简单的 demo 描述整体方案
首先,我们需要创建一个和 ODPS 数据表相同结构的外部表,用于打通和 OSS 的数据通道。
CREATE external TABLE `demo_oss_ext` (
id string COMMENT 'id',
data1 string COMMENT 'data1',
data2 string COMMENT 'data2'
)
partitioned by (ds string)
STORED BY 'com.aliyun.odps.TextStorageHandler'
WITH SERDEPROPERTIES ('odps.text.option.delimiter'='\t')
LOCATION 'oss://id:key@endpoint/bucketname/oss_dir/';
关键参数:
使用下面的 SQL 把 ODPS 中的数据转移到 OSS
insert into demo_oss_ext select * from t_data;
注意:
CREATE READABLE EXTERNAL TABLE user_data_oss_ext (
id int64,
data1 text,
data2 text
)
location('oss://endpoint
dir=data_oss_dir
id=ossid
key=osskey
bucket=bucketname')
FORMAT 'TEXT' (DELIMITER '\t' )
LOG ERRORS INTO error_track_table SEGMENT REJECT LIMIT 10;
关键参数:
CREATE TABLE t_ao(
id int64,
data1 text,
data2 text
)
with (
APPENDONLY=true, COMPRESSTYPE=zlib,
,BLOCKSIZE=2097152,
ORIENTATION=COLUMN,CHECKSUM=true,
OIDS=false)
DISTRIBUTED BY (id);
关键参数:
使用下面的 SQL 把 OSS 中的数据导入到 HybridDB
insert into t_ao select * from user_data_oss_ext;
OSS 和 AWS 的 S3 一致,是云上廉价的存储服务,它打通了几乎所有的云产品。我们推荐的云上数据通道。
目前,云上的 PostgreSQL 和 HybridDB 都支持 OSS 数据源的读写。
PostgreSQL + OSS oss_fdwHybridDB for PostgreSQL + OSS oss_extSLS 支持投递 CSV 格式的数据到 OSS开源的 JAVA 数据格式化实现ODPS 导出数据到 OSSODPS 上如何访问OSS
原文链接:https://zhuanlan.zhihu.com/p/27586795
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26692020/viewspace-3167309/ ,如需转载,请注明出处,否则将追究法律责任。