1051
微信
DRDSReader__Reader插件_使用手册_数据集成-阿里云
1 快速介绍
DrdsReader插件实现了从DRDS(分布式RDS)读取数据。在底层实现上,DrdsReader通过JDBC连接远程DRDS数据库,并执行相应的sql语句将数据从DRDS库中SELECT出来。
DRDS的插件目前CDP只适配了Mysql引擎的场景,DRDS对于CDP而言,就是一套分布式Mysql数据库,并且大部分通信协议遵守Mysql使用场景。
2 实现原理
简而言之,DrdsReader通过JDBC连接器连接到远程的DRDS数据库,并根据用户配置的信息生成查询SELECT SQL语句并发送到远程DRDS数据库,并将该SQL执行返回结果使用CDP自定义的数据类型拼装为抽象的数据集,并传递给下游Writer处理。
对于用户配置Table、Column、Where的信息,DrdsReader将其拼接为SQL语句发送到DRDS数据库。不同于普通的Mysql数据库,DRDS作为分布式数据库系统,无法适配所有Mysql的协议,包括复杂的Join等语句,DRDS暂时无法支持。
3 功能说明
3.1 配置样例
- 配置一个从Mysql数据库同步抽取数据到ODPS的作业:
{
"type": "job",
"traceId": "您可以在这里填写您作业的追踪ID,建议使用业务名+您的作业ID",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "drds",
"parameter": {
"jdbcUrl": "jdbc:mysql://drds-ip:3306/database",
"table": "t_instance",
"username": "datasync",
"password": "xxxxxx",
"column": ["*"],
"where": "1 = 1"
}
},
"writer": {
"plugin": "odps",
"parameter": {
"accessId": "bazhen.csy",
"accessKey": "xxxxxxx",
"project": "project",
"table": "table",
"partition": "pt=20150101",
"column": ["*"]
}
}
}
}
3.2 参数说明
jdbcUrl
描述:描述的是到对端数据库的JDBC连接信息。
jdbcUrl按照Mysql官方规范,并可以填写连接附件控制信息。具体请参看mysql官方文档。
必选:是
默认值:无
username
- 描述:数据源的用户名
- 必选:是
- 默认值:无
password
- 描述:数据源指定用户名的密码
- 必选:是
- 默认值:无
table
- 描述:所选取需要抽取的表。
- 必选:是
- 默认值:无
column
描述:所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息。用户使用代表默认使用所有列配置,例如['']。
支持列裁剪,即列可以挑选部分列进行导出。
支持列换序,即列可以不按照表schema信息进行导出。
支持常量配置,用户需要按照Mysql SQL语法格式:
["id", "`table`", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"]
id为普通列名,`table`为包含保留在的列名,1为整形数字常量,'bazhen.csy'为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。
column必须用户显示指定同步的列集合,不允许为空!
必选:是
默认值:无
where
描述:筛选条件,DrdsReader根据指定的column、table、where条件拼接SQL,并根据这个SQL进行数据抽取。例如在做测试时,可以将where条件指定为limit 10;在实际业务场景中,往往会选择当天的数据进行同步,可以将where条件指定为gmt_create > $bizdate;
where条件可以有效地进行业务增量同步。where条件不配置或者为空,视作全表同步数据。
必选:否
默认值:无
querySql
描述:在有些业务场景下,where这一配置项不足以描述所筛选的条件,用户可以通过该配置型来自定义筛选SQL。当用户配置了这一项之后,CDP系统就会忽略tables,columns这些配置型,直接使用这个配置项的内容对数据进行筛选,例如需要进行多表join后同步数据,使用select a,b from table_a join table_b on table_a.id = table_b.id ;
当用户配置querySql时,MysqlReader直接忽略table、column、where条件的配置,querySql优先级大于table、column、where选项。
必选:否
默认值:无
3.3 类型转换
目前DrdsReader支持大部分Mysql类型,但也存在部分个别类型没有支持的情况,请注意检查你的类型。
下面列出DrdsReader针对Mysql类型转换列表:
CDP 内部类型 | Mysql 数据类型 |
---|---|
Long | int, tinyint, smallint, mediumint, int, bigint |
Double | float, double, decimal |
String | varchar, char, tinytext, text, mediumtext, longtext |
Date | date, datetime, timestamp, time, year |
Boolean | bit, bool |
Bytes | tinyblob, mediumblob, blob, longblob, varbinary |
请注意:
- 除上述罗列字段类型外,其他类型均不支持。
4 约束限制
4.1 一致性视图问题
DRDS本身属于分布式数据库,对外无法提供一致性的多库多表视图,不同于Mysql等单库单表同步,DRDSReader无法抽取同一个时间切片的分库分表快照信息,也就是说CDP DrdsReader抽取底层不同的分表将获取不同的分表快照,无法保证强一致性。
4.2 数据库编码问题
DRDS本身的编码设置非常灵活,包括指定编码到库、表、字段级别,甚至可以均不同编码。优先级从高到低为字段、表、库、实例。我们不推荐数据库用户设置如此混乱的编码,最好在库级别就统一到UTF-8。
DrdsReader底层使用JDBC进行数据抽取,JDBC天然适配各类编码,并在底层进行了编码转换。因此DrdsReader不需用户指定编码,可以自动获取编码并转码。
对于DRDS底层写入编码和其设定的编码不一致的混乱情况,DrdsReader对此无法识别,对此也无法提供解决方案,对于这类情况,导出有可能为乱码
。
4.3 增量数据同步
DrdsReader使用JDBC SELECT语句完成数据抽取工作,因此可以使用SELECT...WHERE...进行增量数据抽取,方式有多种:
- 数据库在线应用写入数据库时,填充modify字段为更改时间戳,包括新增、更新、删除(逻辑删)。对于这类应用,DrdsReader只需要WHERE条件跟上一同步阶段时间戳即可。
- 对于新增流水型数据,DrdsReader可以WHERE条件后跟上一阶段最大自增ID即可。
对于业务上无字段区分新增、修改数据情况,DrdsReader也无法进行增量数据同步,只能同步全量数据。
4.4 SQL安全性
DrdsReader提供querySql语句交给用户自己实现SELECT抽取语句,DrdsReader本身对querySql不做任何安全性校验。这块交由CDP用户方自己保证。
5 FAQ
Q: DrdsReader同步报错,报错信息为XXX
A: 网络或者权限问题,请使用DRDS命令行测试:
mysql -u username -p password -h ip -D database -e "select * from "
如果上述命令也报错,那可以证实是环境问题,请联系你的DBA。
Q: 我想同步DRDS增量数据,怎么配置?
A: DrdsReader必须业务支持增量字段CDP才能同步增量,例如在淘宝大部分业务表中,通过gmt_modified字段表征这条记录的最新修改时间,那么CDP DrdsReader只需要配置where条件为
"where": "Date(add_time) = '2014-06-01'"
最后更新:2016-11-23 16:03:59
上一篇:
OTSReader__Reader插件_使用手册_数据集成-阿里云
下一篇:
OSSReader__Reader插件_使用手册_数据集成-阿里云
简单 Job 示例__SchedulerX for EDAS_二方服务_企业级分布式应用服务 EDAS-阿里云
创建数据库和账号(SQL Server 2008 R2)__设置实例基础配置_快速入门(SQL Server)_云数据库 RDS 版-阿里云
扩展MapReduce__概要_MapReduce_大数据计算服务-阿里云
获取角色列表__账号管理类 API_Open API 参考_企业级分布式应用服务 EDAS-阿里云
SMTP之perl调用示例__SMTP接口说明_邮件推送-阿里云
配置RDS数据源__基础示例—完整数据开发_场景教程_大数据开发套件-阿里云
删除API__API管理相关接口_API_API 网关-阿里云
云服务器 ECS 自动快照随磁盘释放
调用服务__使用说明_用户手册_云服务总线 CSB-阿里云
设置NotifyURL__直播流操作接口_API 手册_CDN-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云