AWS S3 Reader插件用于从S3数据库读取数据。本文为您介绍AWS S3 Reader支持的数据类型、字段映射和数据源等参数及配置示例。
背景信息
AWS S3 Reader插件用于从S3读取数据。在底层实现上,AWS S3 Reader使用Amazon官网提供的Java SDK获取S3数据,并转换为数据同步传输协议传递给Writer。
AWS S3是非结构化数据存储。对于数据集成而言,AWS S3 Reader支持的功能如下:
- 支持且仅支持读取TXT格式的文件,且要求TXT中schema为一张二维表。
- 支持类CSV格式文件,自定义分隔符。
- 支持多种类型数据读取,支持列裁剪和列常量。
- 支持递归读取、文件名过滤。
- 支持文本压缩,现有压缩格式为gzip、bzip2和zip。
- 支持多个Object并发读取。
使用限制
- 暂不支持大陆及中国香港地区的S3数据源。
- AWS S3 Reader暂时不支持以下功能:
- 单个Object(File)不支持多线程并发读取。
- 单个Object在压缩状态下,不支持多线程并发读取。
- 单个Object(File)不能超过100 GB。
支持的数据类型
类型分类 | 数据集成column配置类型 | S3数据类型 |
---|---|---|
整数类 | LONG | LONG |
浮点类 | DOUBLE | DOUBLE |
字符串类 | STRING | STRING |
日期时间类 | DATE | DATE |
布尔型 | BOOL | BOOL |
脚本开发介绍
- 参数说明
参数 描述 是否必选 默认值 datasource 数据源名称,脚本模式支持添加数据源,该配置项输入的内容必须和添加的数据源名称保持一致。 是 无 Object S3的Object信息,支持填写多个Object。例如,bucket中有test文件夹,文件夹中有ll.txt文件,则Object填写test/ll.txt。 - 当指定单个S3 Object时,AWS S3 Reader目前只支持单线程进行数据抽取。
- 当指定多个S3 Object时,AWS S3 Reader支持使用多线程进行数据抽取。线程并发数通过通道数指定。
- 当指定通配符时,AWS S3 Reader尝试遍历出多个Object信息。例如,配置abc[0-9]表示abc0、abc1、abc2、abc3等。配置通配符会导致内存溢出,通常不建议您配置通配符。
说明- 数据同步系统会将一个作业下同步的所有Object视作同一张数据表。您必须保证所有的Object能够适配同一套Schema信息。
- 请注意控制单个目录下的文件个数,否则可能会触发系统OutOfMemoryError报错。如果遇到此情况,请将文件拆分到不同目录后再尝试进行同步。
是 无 column 读取字段列表,type指定源数据的类型,index指定当前列来自于文本第几列(以0开始),value指定当前类型为常量,不是从源头文件读取数据,而是根据value值自动生成对应的列。 默认情况下,您可以全部按照String类型读取数据,配置如下。
您可以指定column字段信息,配置如下。column": ["*"]
"column": { "type": "long", "index": 0 //从S3文本第一列获取int字段。 }, { "type": "string", "value": "alibaba" //从S3 Reader内部生成alibaba的字符串字段作为当前字段。 }
说明 对于您指定的column信息,type必须填写,index和value必须选择其一。是 全部按照STRING类型读取。 fieldDelimiter 读取的字段分隔符。 说明AWS 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:同步数据源的时候不读取表头内容。
说明 压缩文件模式下不支持skipHeader。否 false csvReaderConfig 读取CSV类型文件参数配置,Map类型。读取CSV类型文件使用的CsvReader进行读取,会有很多配置,不配置则使用默认值。 否 无 -
配置一个从AWS S3数据库同步抽取数据的作业。使用脚本模式开发的详情请参见通过脚本模式配置离线同步任务。示例脚本如下。
{ "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",//限流 } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
向导开发介绍
- 选择数据源。
配置同步任务的数据来源和数据去向。
参数 描述 数据源 即上述脚本模式参数说明中的datasource,通常输入您配置的数据源名称。 文件名(含路径) 即上述脚本模式参数说明中的object。 说明 假如您的S3文件名中有根据每天的时间命名的部分,例如,aaa/20171024abc.txt,关于Object系统参数可以设置为aaa/${bdp.system.bizdate}abc.txt。列分隔符 即上述脚本模式参数说明中的fieldDelimiter,默认值为(,)。 编码格式 即上述脚本模式参数说明中的encoding,默认值为utf-8。 null值 即上述脚本模式参数说明中的nullFormat,将要表示为空的字段填入文本框,如果源端存在则将对应的部分转换为空。 压缩格式 即上述脚本模式参数说明中的compress,默认值为不压缩。 是否包含表头 即上述脚本模式参数说明中的skipHeader,默认值为否。 - 字段映射,即上述参数说明中的column。
左侧的源头表字段和右侧的目标表字段为一一对应关系。单击添加一行可以增加单个字段,鼠标放至需要删除的字段上,即可单击删除图标进行删除 。
参数 描述 同名映射 单击同名映射,可以根据名称建立相应的映射关系,请注意匹配数据类型。 同行映射 单击同行映射,可以在同行建立相应的映射关系,请注意匹配数据类型。 取消映射 单击取消映射,可以取消建立的映射关系。 - 通道控制。
参数 描述 任务期望最大并发数 数据同步任务内,可以从源并行读取或并行写入数据存储端的最大线程数。向导模式通过界面化配置并发数,指定任务所使用的并行度。 同步速率 设置同步速率可以保护读取端数据库,以避免抽取速度过大,给源库造成太大的压力。同步速率建议限流,结合源库的配置,请合理配置抽取速率。 错误记录数 错误记录数,表示脏数据的最大容忍条数。 分布式处理能力 暂不支持,敬请期待。