749
微信
ODPSReader__Reader插件_使用手册_数据集成-阿里云
1 快速介绍
ODPSReader 实现了从 ODPS读取数据的功能,有关ODPS请参看(https://wiki.aliyun-inc.com/projects/apsara/wiki/odps)。 在底层实现上,ODPSReader 根据你配置的 源头项目 / 表 / 分区 / 表字段 等信息,通过 Tunnel从 ODPS 系统中读取数据。
2 实现原理
ODPSReader 支持读取分区表、非分区表,不支持读取虚拟视图。当要读取分区表时,需要指定出具体的分区配置,比如读取 t0 表,其分区为 pt=1,ds=hangzhou 那么你需要在配置中配置该值。当要读取非分区表时,你不能提供分区配置。表字段可以依序指定全部列,也可以指定部分列,或者调整列顺序,或者指定常量字段,但是表字段中不能指定分区列(分区列不是表字段)。
3 功能说明
3.1 配置样例
- 这里使用一份读出 ODPS 数据配置样板。
{
"type": "job",
"traceId": "您可以在这里填写您作业的追踪ID,建议使用业务名+您的作业ID",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "odps",
"parameter": {
"accessId": "bazhen.csy",
"accessKey": "XXX",
"project": "project",
"table": "table",
"column": [
"*"
],
"partition": "pt=20140501/ds=*"
}
},
"writer": {
"plugin": "odps",
"parameter": {
"accessId": "bazhen.csy",
"accessKey": "XXX",
"project": "project",
"table": "table",
"column": [
"*"
],
"partition": "pt=20140501/ds=hangzhou"
}
}
}
}
3.2 参数说明
accessId
- 描述:ODPS系统登录ID
- 必选:是
- 默认值:无
accessKey
- 描述:ODPS系统登录Key
- 必选:是
- 默认值:无
project
- 描述:读取数据表所在的 ODPS 项目名称(大小写不敏感)
- 必选:是
- 默认值:无
table
- 描述:读取数据表的表名称(大小写不敏感)
- 必选:是
- 默认值:无
partition
- 描述:读取数据所在的分区信息,支持linux shell通配符,包括 表示0个或多个字符,?代表任意一个字符。例如现在有分区表 test,其存在 pt=1/ds=hangzhou pt=1/ds=shanghai pt=2/ds=hangzhou pt=2/ds=beijing 四个分区,如果你想读取 pt=1/ds=shanghai 这个分区的数据,那么你应该配置为:
"partition":"pt=1/ds=shanghai"
; 如果你想读取 pt=1下的所有分区,那么你应该配置为: `"partition":"pt=1/ds= ";如果你想读取整个 test 表的所有分区的数据,那么你应该配置为:
"partition":"pt=/ds="` - 必选:如果表为分区表,则必填。如果表为非分区表,则不能填写
- 默认值:无
- 描述:读取数据所在的分区信息,支持linux shell通配符,包括 表示0个或多个字符,?代表任意一个字符。例如现在有分区表 test,其存在 pt=1/ds=hangzhou pt=1/ds=shanghai pt=2/ds=hangzhou pt=2/ds=beijing 四个分区,如果你想读取 pt=1/ds=shanghai 这个分区的数据,那么你应该配置为:
column
描述:读取 odps 源头表的列信息。例如现在有表 test,其字段为:id,name,age 如果你想依次读取 id,name,age 那么你应该配置为:
"column":["id","name","age"]
或者配置为:"column":["*"]
这里 表示依次读取表的每个字段,但是我们不推荐你配置抽取字段为 ,因为当你的表字段顺序调整、类型变更或者个数增减,你的任务就会存在源头表列和目的表列不能对齐的风险,会直接导致你的任务运行结果不正确甚至运行失败。如果你想依次读取 name,id 那么你应该配置为:"coulumn":["name","id"]
如果你想在源头抽取的字段中添加常量字段(以适配目标表的字段顺序),比如你想抽取的每一行数据值为 age 列对应的值,name列对应的值,常量日期值1988-08-08 08:08:08,id 列对应的值 那么你应该配置为:"column":["age","name","'1988-08-08 08:08:08'","id"]
即常量列首尾用符号'
包住即可,我们内部实现上识别常量是通过检查你配置的每一个字段,如果发现有字段首尾都有'
,则认为其是常量字段,其实际值为去除'
之后的值。注意:ODPSReader 抽取数据表不是通过 ODPS 的 Select SQL语句,所以不能在字段上指定函数,也不能指定分区字段名称(分区字段不属于表字段)column必须用户显示指定同步的列集合,不允许为空!
必选:是
默认值:无
accountProvider [待定]
- 描述:读取时使用的 ODPS 账号类型。目前支持 aliyun/taobao 两种类型。默认为 aliyun,可不填
- 必选:否
- 默认值:aliyun
3.3 类型转换
下面列出 ODPSReader 读出类型与 CDP 内部类型的转换关系:
ODPS 数据类型 | CDP 内部类型 |
---|---|
BIGINT | Long |
DOUBLE | Double |
STRING | String |
DATETIME | Date |
Boolean | Bool |
4 性能报告(线上环境实测)
4.1 环境准备
4.1.1 数据特征
建表语句:
use cdo_datasync;
create table CDP3_odpswriter_perf_10column_1kb_00(
s_0 string,
bool_1 boolean,
bi_2 bigint,
dt_3 datetime,
db_4 double,
s_5 string,
s_6 string,
s_7 string,
s_8 string,
s_9 string
)PARTITIONED by (pt string,year string);
单行记录类似于:
s_0 : 485924f6ab7f272af361cd3f7f2d23e0d764942351#$%^&fdafdasfdas%%^(*&^^&*
bool_1 : true
bi_2 : 1696248667889
dt_3 : 2013-07-0600: 00: 00
db_4 : 3.141592653578
s_5 : 100dafdsafdsahofjdpsawifdishaf;dsadsafdsahfdsajf;dsfdsa;fjdsal;11209
s_6 : 100dafdsafdsahofjdpsawifdishaf;dsadsafdsahfdsajf;dsfdsa;fjdsal;11fdsafdsfdsa209
s_7 : 100DAFDSAFDSAHOFJDPSAWIFDISHAF;dsadsafdsahfdsajf;dsfdsa;FJDSAL;11209
s_8 : 100dafdsafdsahofjdpsawifdishaf;DSADSAFDSAHFDSAJF;dsfdsa;fjdsal;11209
s_9 : 12~!2345100dafdsafdsahofjdpsawifdishaf;dsadsafdsahfdsajf;dsfdsa;fjdsal;11209
4.1.2 机器参数
- 执行CDP的机器参数为:
- cpu : 24 Core Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz cache 15.36MB
- mem : 50GB
- net : 千兆双网卡
- jvm : -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
- disc: CDP 数据不落磁盘,不统计此项
4.2 测试报告
并发任务数 | CDP速度(Rec/s) | CDP流量(MB/S) | 网卡流量(MB/S) | CDP运行负载 |
---|---|---|---|---|
1 | 117507 | 50.20 | 53.7 | 0.62 |
2 | 232976 | 99.54 | 108.1 | 0.99 |
4 | 387382 | 165.51 | 181.3 | 1.98 |
5 | 426054 | 182.03 | 202.2 | 2.35 |
6 | 434793 | 185.76 | 204.7 | 2.77 |
8 | 495904 | 211.87 | 230.2 | 2.86 |
16 | 501596 | 214.31 | 234.7 | 2.84 |
32 | 501577 | 214.30 | 234.7 | 2.99 |
64 | 501625 | 214.32 | 234.7 | 3.22 |
说明:
- OdpsReader 影响速度最主要的是channel数目,这里到达8时已经打满网卡,过多调大反而会影响系统性能。
- channel数目的选择,可以考虑odps表文件组织,可尝试合并小文件再进行同步调优。
最后更新:2016-11-23 16:03:59
上一篇:
PostgreSQLReader__Reader插件_使用手册_数据集成-阿里云
下一篇:
OTSReader__Reader插件_使用手册_数据集成-阿里云
阿里云自研数据库下周将相,“去IOE”使命完成
查询请求缓存命中率__资源监控接口_API 手册_CDN-阿里云
FTP数据源配置__数据源配置_数据同步手册_用户操作指南_大数据开发套件-阿里云
设置静态网站托管__管理存储空间_控制台用户指南_对象存储 OSS-阿里云
构建容器镜像__构建管理_用户指南_容器服务-阿里云
词汇表___专有网络 VPC-阿里云
静态网站托管__开发人员指南_对象存储 OSS-阿里云
证书相关__常见问题_CDN-阿里云
MQ Java SDK 日志找不到问题分析__技术分享_技术运维问题_消息队列 MQ-阿里云
跨阿里云账号RDS实时同步__实时同步_用户指南_数据传输-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云