Amazon S3数据源

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格式文件,自定义分隔符。

  • 支持ORCPARQUET格式。

  • 支持多种类型数据读取(使用String表示),支持列裁剪和列常量。

  • 支持递归读取、文件名过滤。

  • 支持文本压缩,现有压缩格式为gzipbzip2zip

    说明

    一个压缩包不允许多文件打包压缩。

  • 多个Object支持并发读取。

  • 单个Object(File)不支持多线程并发读取。

  • 单个Object在压缩状态下,不支持多线程并发读取。

  • 单个Object(File)不能超过100 GB。

创建数据源

在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建并管理数据源详细的配置参数解释可在配置界面查看对应参数的文案提示

数据同步任务开发

数据同步任务的配置入口和通用配置流程可参见下文的配置指导。

单表离线同步任务配置指导

附录:脚本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

  • 当指定单个S3 Object时,Amazon S3 Reader目前只支持单线程进行数据抽取。

  • 当指定多个S3 Object时,Amazon S3 Reader支持使用多线程进行数据抽取。线程并发数通过通道数指定。

  • 当指定通配符时,Amazon 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

读取的字段分隔符。

说明

Amazon S3 Reader在读取数据时,需要指定字段分割符,如果不指定默认为(,),界面配置中也会默认填写为(,)。

如果分隔符不可见,请填写Unicode编码。例如,\u001b、\u007c

默认值:(,)

compress

文本压缩类型,默认不填写(即不压缩)。支持压缩类型为gzipbzip2zip

不压缩

encoding

读取文件的编码配置。

utf-8

nullFormat

文本文件中无法使用标准字符串定义null(空指针),数据同步系统提供nullFormat定义哪些字符串可以表示为null。例如,您配置nullFormat="null",那么如果源头数据是null",数据同步系统会视作null字段。

skipHeader

CSV格式文件通过skipHeader配置是否读取表头内容。

  • True:同步数据源的时候读取表头内容。

  • False:同步数据源的时候不读取表头内容。

说明

压缩文件模式下不支持skipHeader

false

csvReaderConfig

读取CSV类型文件参数配置,Map类型。读取CSV类型文件使用的CsvReader进行读取,会有很多配置,不配置则使用默认值。