Simple Storage Service(简称S3)是一种专为从任意位置存储和检索任意数量的数据而构建的对象存储,DataWorks数据集成支持使用Amazon S3 Reader插件从S3数据库读取数据,本文为您介绍DataWorks的Amazon S3数据读取能力。
支持的Amazon S3版本
Amazon S3 Reader使用Amazon官网提供的Java SDK获取S3数据。
使用限制
暂不支持中国内地及中国香港地区的S3数据源。
Amazon S3是非结构化数据存储。对于数据集成而言,目前Amazon S3 Reader支持的功能如下。
支持
不支持
支持且仅支持读取TXT格式的文件,且要求TXT中schema为一张二维表。
支持类CSV格式文件,自定义分隔符。
支持多种类型数据读取,支持列裁剪和列常量。
支持递归读取、文件名过滤。
支持文本压缩,现有压缩格式为gzip、bzip2和zip。
支持多个Object并发读取。
单个Object(File)不支持多线程并发读取。
单个Object在压缩状态下,不支持多线程并发读取。
单个Object(File)不能超过100 GB。
支持的字段类型
类型分类 | 数据集成column配置类型 | S3数据类型 |
整数类 | LONG | LONG |
浮点类 | DOUBLE | DOUBLE |
字符串类 | STRING | STRING |
日期时间类 | DATE | DATE |
布尔型 | BOOL | BOOL |
数据同步任务开发
Amazon S3数据同步任务的配置入口和通用配置流程指导可参见下文的配置指导,详细的配置参数解释可在配置界面查看对应参数的文案提示。
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建与管理数据源。
单表离线同步任务配置指导
操作流程请参见通过向导模式配置离线同步任务、通过脚本模式配置离线同步任务。
脚本模式配置的全量参数和脚本Demo请参见下文的附录:Amazon S3脚本Demo与参数说明。
附录:Amazon S3脚本Demo与参数说明
附录:离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要在任务脚本中按照脚本的统一格式要求编写脚本中的reader参数,脚本模式的统一要求请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下的数据源的Reader参数的指导详情。
Amazon S3 Reader脚本Demo
{
"type":"job",
"version":"2.0",//版本号。
"steps":[
{
"stepType":"s3",//插件名。
"parameter":{
"nullFormat":"",//定义可以表示为null的字符串。
"compress":"",//文本压缩类型。
"datasource":"",//数据源。
"column":[//字段。
{
"index":0,//列序号。
"type":"string"//数据类型。
},
{
"index":1,
"type":"long"
},
{
"index":2,
"type":"double"
},
{
"index":3,
"type":"boolean"
},
{
"format":"yyyy-MM-dd HH:mm:ss", //时间格式。
"index":4,
"type":"date"
}
],
"skipHeader":"",//类CSV格式文件可能存在表头为标题情况,需要跳过。
"encoding":"",//编码格式。
"fieldDelimiter":",",//字段分隔符。
"fileFormat": "",//文本类型。
"object":[]//object前缀。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":""//错误记录数。
},
"speed":{
"throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
"concurrent":1 //作业并发数。
"mbps":"12",//限流,此处1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Amazon S3 Reader脚本参数
参数 | 描述 | 是否必选 | 默认值 |
datasource | 数据源名称,脚本模式支持添加数据源,该配置项输入的内容必须和添加的数据源名称保持一致。 | 是 | 无 |
Object | S3的Object信息,支持填写多个Object。例如,bucket中有test文件夹,文件夹中有ll.txt文件,则Object填写test/ll.txt。
说明
| 是 | 无 |
column | 读取字段列表,type指定源数据的类型,index指定当前列来自于文本第几列(以0开始),value指定当前类型为常量,不是从源头文件读取数据,而是根据value值自动生成对应的列。 默认情况下,您可以全部按照String类型读取数据,配置如下。
您可以指定column字段信息,配置如下。
说明 对于您指定的column信息,type必须填写,index和value必须选择其一。 | 是 | 全部按照STRING类型读取。 |
fieldDelimiter | 读取的字段分隔符。 说明 Amazon S3 Reader在读取数据时,需要指定字段分割符,如果不指定默认为(,),界面配置中也会默认填写为(,)。 如果分隔符不可见,请填写Unicode编码。例如,\u001b、\u007c。 | 是 | 默认值:(,) |
compress | 文本压缩类型,默认不填写(即不压缩)。支持压缩类型为gzip、bzip2和zip。 | 否 | 不压缩 |
encoding | 读取文件的编码配置。 | 否 | utf-8 |
nullFormat | 文本文件中无法使用标准字符串定义null(空指针),数据同步系统提供nullFormat定义哪些字符串可以表示为null。例如,您配置 | 否 | 无 |
skipHeader | CSV格式文件通过skipHeader配置是否读取表头内容。
说明 压缩文件模式下不支持skipHeader。 | 否 | false |
csvReaderConfig | 读取CSV类型文件参数配置,Map类型。读取CSV类型文件使用的CsvReader进行读取,会有很多配置,不配置则使用默认值。 | 否 | 无 |