622
阿里云
高速 OSS 并行导入导出__快速入门_云数据库 HybridDB-阿里云
云数据库HybridDB(ApsaraDB HybridDB)是一种在线MPP大规模并行处理数据仓库服务。云数据库HybridDB基于Greenplum Database开源数据库项目,并由阿里云深度扩展支持OSS存储、JSON数据类型、HyperLogLog预估分析等功能特性。
在阿里云上,支持通过 gpossext 并行装载数据到 HybridDB 中,也支持并行的把数据导出到 OSS 中。
gpossext 语法
CREATE [READABLE] EXTERNAL TABLE tablename
( columnname datatype [, ...] | LIKE othertable )
LOCATION ('ossprotocol')
FORMAT '...'
[ ENCODING 'encoding' ]
[ LOG ERRORS ...]
CREATE WRITABLE EXTERNAL TABLE table_name
( column_name data_type [, ...] | LIKE other_table )
LOCATION ('ossprotocol')
FORMAT '...'
[ ENCODING 'encoding' ]
[ DISTRIBUTED BY (column, [ ... ] ) | DISTRIBUTED RANDOMLY ]
ossprotocol:
oss://oss_endpoint filepath=[folder/[folder/]...]/file_name
id=userossid key=userosskey bucket=ossbucket
ossprotocol:
oss://oss_endpoint dir=[folder/[folder/]...]/file_name
id=userossid key=userosskey bucket=ossbucket
参数解释
ossprotocol 整个协议和相关参数描述如下
常用参数
1. 协议名,当然是 oss
2. ossendpoint 参数,是内网访问oss的地址,也叫 host
3. id oss账号ID
4. key oss账号key
5. bucket ossbucket,需要创建 oss 账号后分配
6. filepath oss 中带路径的文件名,需要注意
6.1 文件名包含文件路径,但不包含 bucket 名
6.2 并行装载模式要求文件被均匀拆分为多个文件
6.3 文件命名方式为 finame.x,x 要求从 1 开始,且是连续的
6.4 例 filename.1 filename.2 filename.3 ...
6.5 可以被导入的文件有 filename filename.1 filename.2 ...;其中1到N需要是连续的
6.6 为了最大化导入性能,建议拆分文件的个数是导入到的 HybridDB segment 个数的倍数
7. dir oss 中带路径的虚拟文件夹,需要注意
7.1 dir指 oss 上的虚拟文件夹,它需要以 / 结尾
7.2 该模式和 filepath 互斥,不能同时指定
7.3 该模式会导入指定虚拟目录下的所有文件到 HybridDB,但不包括它子目录和子目录下的文件
7.4 和 filepath 一样,该模式也是并行导入的,为了最大化导入性能,每个文件的大小需要尽量的均匀。
7.5 和 filepath 不同,dir 下的文件没有命名要求
导入模式参数
8. async 是否启用异步模式装载数据
8.1 开启辅助线程从 oss 装载数据,加速导入性能。默认导入模式是异步模式。
8.2 默认情况下异步模式是打开的,如果需要关掉,可以使用参数 async = false 或 async = f
8.3 异步模式和普通模式比,会消耗更多的硬件资源
导出模式参数
9. 针对导出模式,新增下列两个参数
9.1 oss_flush_block_size 单词刷出到 oss 的buffer大小,默认 32 MB,可选范围 1 到 128 MB
9.2 oss_file_max_size 写到 oss 的最大文件大小,超出之后会切换到另一个文件再写。默认 1024 MB,可选范围 8 到 4000 MB
9.3 上述两个参数对导入模式无效
10 针对导出模式,需要注意
10.1 WRITABLE 是导出模式外部表的关键字,创建外部表时需要明确指明
10.2 导出模式目前只支持虚拟文件夹的匹配模式,即只支持 dir 不支持 filepath
10.3 导出模式的 DISTRIBUTED BY 子句可以使 segment 直接把本地数据写入 oss,不用数据重分布
其他通用参数
11 针对导入模式和导出模式,还有下列容错相关参数
11.1 oss_connect_timeout 设置链接超时,单位秒,默认是10秒
11.2 oss_dns_cache_timeout 设置DNS超时,单位秒,默认是60秒
11.3 oss_speed_limit 控制能容忍的最小速率,默认是1024,即1K
11.4 oss_speed_time 控制能容忍的最长时间,默认是15秒
11.5 如果使用了上述默认值,表示如果连续15秒的传输速率小于1K,则超时
11.6 详细描述,请客参考文章末尾的链接
gpossext 的其他参数兼容 HybridDB EXTERNAL TABLE 的原有语法,主要有
1. FORMAT 支持文件格式,支持 text,csv 等
2. ENCODING 文件中数据的编码格式,如 utf8
3. LOG ERRORS 依然支持容错模式数据导入,通过制定该子句忽略掉导入中出错的数据
用例
# 创建 oss 导入外部表
create READABLE external table ossexample
(date text, time text, open float, high float,
low float, volume int)
location('oss://oss-cn-hangzhou.aliyuncs.com
filepath=osstest/example.csv id=XXX
key=XXX bucket=testbucket') FORMAT 'csv'
LOG ERRORS SEGMENT REJECT LIMIT 5;
# 创建 oss 导出外部表
create WRITABLE external table ossexample_exp
(date text, time text, open float, high float,
low float, volume int)
location('oss://oss-cn-hangzhou.aliyuncs.com
dir=osstest/exp/ id=XXX
key=XXX bucket=testbucket') FORMAT 'csv'
DISTRIBUTED BY (date);
# 创建堆表,数据就装载到这张表中
create table example
(date text, time text, open float,
high float, low float, volume int)
DISTRIBUTED BY (date);
# 数据并行的从 ossexample 装载到 example 中
insert into example select * from ossexample;
# 数据并行的从 example 导出到 oss
insert into ossexample_exp select * from example;
# 可以看到,每个 segment 都会参与工作。
# 他们并行的从 oss 拉取数据
# 然后通过 Redistribute Motion 分发给对应的 segment.
# 每个 segment 再通过 insert 节点入库
explain insert into example select * from ossexample;
QUERY PLAN
--------------------------------------------------------------------------------------------------
Insert (slice0; segments: 4) (rows=250000 width=92)
-> Redistribute Motion 4:4 (slice1; segments: 4) (cost=0.00..11000.00 rows=250000 width=92)
Hash Key: ossexample.date
-> External Scan on ossexample (cost=0.00..11000.00 rows=250000 width=92)
(4 rows)
# 可以看到,segment 把本地数据直接导出到 oss ,没有进行数据重分布
explain insert into ossexample_exp select * from example;
QUERY PLAN
---------------------------------------------------------------
Insert (slice0; segments: 3) (rows=1 width=92)
-> Seq Scan on example (cost=0.00..0.00 rows=1 width=92)
(2 rows)
gpossext 使用注意
gpossext 打开了 oss 到 HybridDB 的数据通道,用户可以把数据放到廉价的 oss 中,再导入到 HybridDB 中进行分析。使用需要注意
1. gpossext 中除了 ossprotocol,其他的部分和 HybridDB 相同。
2. 数据导入的性能和 HybridDB 集群的资源(CPU IO MEM NET)相关,也和 OSS 相关。
3. 为了保证数据导入的性能 ossendpoint Region 需要匹配 HybridDB 云上所在 Region,建议 OSS 和 HybridDB 在同一个 Region 以获得最好的性能。相关信息请参考下面的链接。
错误处理
当导入或导出操作出错时,错误日志会出现下列信息:
code: 出错请求的HTTP状态码
error_code: OSS的错误码
error_msg: OSS的错误信息
req_id: 标识该次请求的UUID;当您无法解决问题时,可以凭 req_id 来请求 oss 开发工程师的帮助
请参考文档末尾的链接以了解各类错误,超时相关的错误可以使用 oss_ext 相关参数处理
参考链接
最后更新:2016-12-01 11:08:37
上一篇:
插件管理__快速入门_云数据库 HybridDB-阿里云
下一篇:
导入MySQL数据__快速入门_云数据库 HybridDB-阿里云
云计算市场潜力无限,阿里云居然能揽获头把交椅?
LogHub数据源__准备数据源_用户指南_业务实时监控服务 ARMS-阿里云
Redis-cli连接__连接实例_快速入门_云数据库 Redis 版-阿里云
请求结构__调用方式_API使用手册_消息服务-阿里云
Discuz如何存储远程附件到OSS__ossftp_常用工具_对象存储 OSS-阿里云
是否可以用代金券支付续费?___代金券_代金券及推荐码_财务-阿里云
手工脚本__脚本编写_使用手册_性能测试-阿里云
文档历史__NAT网关产品简介_用户指南_专有网络 VPC-阿里云
LogHub-协同消费组__Getting-Started_日志服务-阿里云
人工智能产业爆发前夜,阿里云推异构计算产品家族
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云