312
魔兽
OTSWriter__Writer插件_使用手册_数据集成-阿里云
1 快速介绍
OTSWriter插件实现了向OTS写入数据,目前支持两种写入方式:
- PutRow,对应于OTS API PutRow,插入数据到指定的行,如果该行不存在,则新增一行;若该行存在,则覆盖原有行。
- UpdateRow,对应于OTS API UpdateRow,更新指定行的数据,如果该行不存在,则新增一行;若该行存在,则根据请求的内容在这一行中新增、修改或者删除指定列的值。
OTS是构建在阿里云飞天分布式系统之上的 NoSQL数据库服务,提供海量结构化数据的存储和实时访问。OTS 以实例和表的形式组织数据,通过数据分片和负载均衡技术,实现规模上的无缝扩展。
2 实现原理
简而言之,OTSWriter通过OTS官方Java SDK连接到OTS服务端,并通过SDK写入OTS服务端。OTSWriter本身对于写入过程做了很多优化,包括写入超时重试、异常写入重试、批量提交等Feature。
3 功能说明
3.1 配置样例
- 配置一个写入OTS作业:
{
"type": "job",
"traceId": "您可以在这里填写您作业的追踪ID,建议使用业务名+您的作业ID",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "mysql",
"parameter": {}
},
"writer": {
"plugin": "ots",
"parameter": {
"endpoint": "",
"accessId": "",
"accessKey": "",
"instanceName": "",
"table": "",
"primaryKey": [
{
"name": "pk1",
"type": "string"
},
{
"name": "pk2",
"type": "int"
}
],
"column": [
{
"name": "col2",
"type": "INT"
},
{
"name": "col3",
"type": "STRING"
},
{
"name": "col4",
"type": "STRING"
},
{
"name": "col5",
"type": "BINARY"
},
{
"name": "col6",
"type": "DOUBLE"
}
],
"writeMode": "PutRow"
}
}
}
}
3.2 参数说明
- endpoint
- 描述:OTS Server的EndPoint(服务地址),例如https://bazhen.cn−hangzhou.ots.aliyuncs.com。
- 必选:是
- 默认值:无
- accessId
- 描述:OTS的accessId
- 必选:是
- 默认值:无
- accessKey
- 描述:OTS的accessKey
- 必选:是
- 默认值:无
- instanceName
- 描述:OTS的实例名称,实例是用户使用和管理 OTS 服务的实体,用户在开通 OTS 服务之后,需要通过管理控制台来创建实例,然后在实例内进行表的创建和管理。实例是 OTS 资源管理的基础单元,OTS 对应用程序的访问控制和资源计量都在实例级别完成。
- 必选:是
- 默认值:无
table
- 描述:所选取的需要抽取的表名称,这里有且只能填写一张表。在OTS不存在多表同步的需求。
- 必选:是
- 默认值:无
primaryKey
描述: OTS的主键信息,使用JSON的数组描述字段信息。OTS本身是NoSQL系统,在OTSWriter导入数据过程中,必须指定相应地字段名称。
OTS的PrimaryKey只能支持STRING,INT两种类型,因此OTSWriter本身也限定填写上述两种类型。
CDP本身支持类型转换的,因此对于源头数据非String/Int,OTSWriter会进行数据类型转换。
配置实例:
"primaryKey" : [ {"name":"pk1", "type":"string"}, {"name":"pk2", "type":"int"} ],
必选:是
默认值:无
column
描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。使用格式为
{"name":"col2", "type":"INT"},
其中的name指定写入的OTS列名,type指定写入的类型。OTS类型支持STRING,INT,DOUBLE,BOOL和BINARY几种类型 。
写入过程不支持常量、函数或者自定义表达式。
必选:是
默认值:无
writeMode
- 描述:写入模式,目前支持两种模式,
- PutRow,对应于OTS API PutRow,插入数据到指定的行,如果该行不存在,则新增一行;若该行存在,则覆盖原有行。
- UpdateRow,对应于OTS API UpdateRow,更新指定行的数据,如果该行不存在,则新增一行;若该行存在,则根据请求的内容在这一行中新增、修改或者删除指定列的值。
- 必选:是
- 默认值:无
- 描述:写入模式,目前支持两种模式,
3.3 类型转换
目前OTSWriter支持所有OTS类型,下面列出OTSWriter针对OTS类型转换列表: |CDP内部类型 | OTS 数据类型 | | ---------- | -------- | | Long | Integer | | Double | Double | | String | String | | Boolean | Boolean | | Bytes | Binary |
- 注意,OTS本身不支持日期型类型。应用层一般使用Long报错时间的Unix TimeStamp。
4 性能报告
4.1 环境准备
4.1.1 数据特征
2列PK(10 + 8),15列String(10 Byte), 2两列Integer(8 Byte),算上Column Name每行大概327Byte,每次BatchWriteRow写入100行数据,所以当个请求的数据大小是32KB。
4.1.2 机器参数
OTS端:3台前端机,5台后端机
CDP运行端: 24核CPU, 98GB内存
4.2 测试报告
并发数 | CDP CPU | CDP流量 | OTS 流量 | BatchWrite前端QPS | BatchWriteRow前端延时 |
---|---|---|---|---|---|
40 | 1027% | Speed 22.13MB/s, 112640 records/s | 65.8M/s | 42 | 153ms |
50 | 1218% | Speed 24.11MB/s, 122700 records/s | 73.5M/s | 47 | 174ms |
60 | 1355% | Speed 25.31MB/s, 128854 records/s | 78.1M/s | 50 | 190ms |
70 | 1578% | Speed 26.35MB/s, 134121 records/s | 80.8M/s | 52 | 210ms |
80 | 1771% | Speed 26.55MB/s, 135161 records/s | 82.7M/s | 53 | 230ms |
5 约束限制
5.1 写入幂等性
OTS写入本身是支持幂等性的,也就是使用OTS SDK同一条数据写入OTS系统,一次和多次请求的结果可以理解为一致的。因此对于OTSWriter多次尝试写入同一条数据与写入一条数据结果是等同的。
5.2 单任务FailOver
由于OTS写入本身是幂等性的,因此可以支持单任务FailOver。即一旦写入Fail,CDP会重新启动相关子任务进行重试。
最后更新:2016-11-23 16:03:59
上一篇:
ODPSWriter__Writer插件_使用手册_数据集成-阿里云
下一篇:
DRDSWriter__Writer插件_使用手册_数据集成-阿里云
容器监控服务__日志和监控_用户指南_容器服务-阿里云
阿里云栖大会上 “达摩院”吸睛了!
ReservedThroughput__DataType_API 参考_表格存储-阿里云
SDK接口简介__数据订阅_用户指南_数据传输-阿里云
TableMeta__DataType_API 参考_表格存储-阿里云
图片上传__老版图片服务手册_对象存储 OSS-阿里云
如何添加成员__平台介绍_数加平台介绍-阿里云
阿里云发布自研商用关系型数据库POLARDB
搜索指定发布信息__发布管理相关接口_Open API_消息队列 MQ-阿里云
添加域名__域名操作_产品使用手册_云解析-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云