Simple Storage Service(简称S3)是一种专为从任意位置存储和检索任意数量的数据而构建的对象存储,DataWorks数据集成支持使用Amazon S3 Reader插件从S3数据库读取数据,本文为您介绍DataWorks的Amazon S3数据读取能力。
支持的Amazon S3版本
Amazon S3 Reader使用Amazon官网提供的Java SDK获取S3数据。
使用限制
Amazon S3是非结构化数据存储。对于数据集成而言,目前Amazon S3 Reader支持的功能如下。
支持 | 不支持 |
支持且仅支持读取TXT 格式的文件,且要求TXT 中Schema为一张二维表。 支持类CSV 格式文件,自定义分隔符。 支持ORC 、PARQUET 格式。 支持多种类型数据读取(使用String表示),支持列裁剪和列常量。 支持递归读取、文件名过滤。 支持文本压缩,现有压缩格式为gzip 、bzip2 和zip 。 多个Object 支持并发读取。
| 单个Object(File) 不支持多线程并发读取。 单个Object 在压缩状态下,不支持多线程并发读取。 单个Object(File) 不能超过100 GB。
|
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建并管理数据源,详细的配置参数解释可在配置界面查看对应参数的文案提示。
数据同步任务开发
数据同步任务的配置入口和通用配置流程可参见下文的配置指导。
附录:脚本Demo与参数说明
离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下数据源的参数配置详情。
Reader脚本Demo
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"s3",
"parameter":{
"nullFormat":"",
"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":"",
"encoding":"",
"fieldDelimiter":",",
"fileFormat": "",
"object":[]
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":""
},
"speed":{
"throttle":true,
"concurrent":1
"mbps":"12",
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Reader脚本参数
参数 | 描述 | 是否必选 | 默认值 |
datasource | 数据源名称,脚本模式支持添加数据源,该配置项输入的内容必须和添加的数据源名称保持一致。 | 是 | 无 |
Object | S3的Object信息,支持填写多个Object。例如,bucket中有test文件夹,文件夹中有ll.txt文件,则Object填写test/ll.txt。 当指定单个S3 Object时,Amazon S3 Reader目前只支持单线程进行数据抽取。 当指定多个S3 Object时,Amazon S3 Reader支持使用多线程进行数据抽取。线程并发数通过通道数指定。 当指定通配符时,Amazon S3 Reader尝试遍历出多个Object信息。例如,配置abc*[0-9] 表示abc0、abc1、abc2、abc3等。配置通配符会导致内存溢出,通常不建议您配置通配符。
| 是 | 无 |
column | 读取字段列表,type指定源数据的类型,index指定当前列来自于文本第几列(以0开始),value指定当前类型为常量,不是从源头文件读取数据,而是根据value值自动生成对应的列。 默认情况下,您可以全部按照String类型读取数据,配置如下。
您可以指定column字段信息,配置如下。
"column":
{
"type": "long",
"index": 0
},
{
"type": "string",
"value": "alibaba"
}
说明 对于您指定的column信息,type必须填写,index和value必须选择其一。 | 是 | 全部按照STRING类型读取。 |
fieldDelimiter | 读取的字段分隔符。 说明 Amazon S3 Reader在读取数据时,需要指定字段分割符,如果不指定默认为(,),界面配置中也会默认填写为(,)。 如果分隔符不可见,请填写Unicode编码。例如,\u001b、\u007c。 | 是 | 默认值:(,) |
compress | 文本压缩类型,默认不填写(即不压缩)。支持压缩类型为gzip、bzip2和zip。 | 否 | 不压缩 |
encoding | 读取文件的编码配置。 | 否 | utf-8 |
nullFormat | 文本文件中无法使用标准字符串定义null(空指针),数据同步系统提供nullFormat定义哪些字符串可以表示为null。例如,您配置nullFormat="null" ,那么如果源头数据是null" ,数据同步系统会视作null字段。 | 否 | 无 |
skipHeader | CSV格式文件通过skipHeader配置是否读取表头内容。 True:同步数据源的时候读取表头内容。 False:同步数据源的时候不读取表头内容。
| 否 | false |
csvReaderConfig | 读取CSV类型文件参数配置,Map类型。读取CSV类型文件使用的CsvReader进行读取,会有很多配置,不配置则使用默认值。 | 否 | 无 |