Simple Storage Service(简称S3)是一种专为从任意位置存储和检索任意数量的数据而构建的对象存储,DataWorks数据集成支持使用Amazon S3读写数据,本文为您介绍DataWorks的Amazon S3数据源能力。
使用限制
离线读
Amazon S3是非结构化数据存储。对于数据集成而言,目前Amazon S3 Reader支持的功能如下。
支持 | 不支持 |
|
|
离线写
Amazon S3 Writer实现了从数据同步协议到Amazon S3中的文本文件的转换功能,Amazon S3本身是无结构化数据存储,目前Amazon S3 Writer支持的功能如下。
支持 | 不支持 |
|
|
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见数据源管理,详细的配置参数解释可在配置界面查看对应参数的文案提示。
数据同步任务开发
数据同步任务的配置入口和通用配置流程可参见下文的配置指导。
单表离线同步任务配置指导
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
附录:脚本Demo与参数说明
离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见脚本模式配置,以下为您介绍脚本模式下数据源的参数配置详情。
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"
}
]
}
}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进行读取,会有很多配置,不配置则使用默认值。 | 否 | 无 |
Writer脚本Demo
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "s3",
"category": "writer",
"name": "Writer",
"parameter": {
"datasource": "datasource1",
"object": "test/csv_file.csv",
"fileFormat": "csv",
"encoding": "utf8/gbk/...",
"fieldDelimiter": ",",
"lineDelimiter": "\n",
"column": [
"0",
"1"
],
"header": [
"col_bigint",
"col_tinyint"
],
"writeMode": "truncate",
"writeSingleObject": true
}
}
],
"setting": {
"errorLimit": {
"record": "" //错误记录数。
},
"speed": {
"throttle": true, //当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
"concurrent": 1 //作业并发数。
"mbps": "12", //限流,此处1mbps = 1MB/s。
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}Writer脚本参数
参数 | 描述 | 是否必选 | 默认值 |
datasource | 数据源名称,脚本模式支持添加数据源,该配置项输入的内容必须和添加的数据源名称保持一致。 | 是 | 无 |
object | 目标对象名称 | 是 | 无 |
fileFormat | 文件格式支持如下:
| 是 | text |
writeMode |
| 是 | append |
fieldDelimiter | 写入的字段分隔符。 | 否 | 默认值:(,) |
lineDelimiter | 写入的行分隔符。 | 否 | 默认值:(\n) |
compress | 文本压缩类型,默认不填写(即不压缩)。
| 否 | 不压缩 |
nullFormat | 文本文件中无法使用标准字符串定义null(空指针),数据同步系统提供 | 否 | 无 |
header | 写入时的表头,例如: | 否 | 无 |
writeSingleObject | true:表示写单个文件。false:表示写多个文件。 说明
| 否 | false |
encoding | 写出文件的编码配置。 | 否 | utf-8 |
column | 写出文件的列配置
| 是 | 无 |