COS数据源

COS数据源可提供读取文件的能力,通过使用本数据源,可以获取COS中存储的文件,解析并同步至任意目标数据源。本文为您介绍DataWorksCOS数据同步的能力支持情况。

数据类型

COS 数据源,支持以下的数据类型。

数据类型

说明

STRING

文本类型。

LONG

整型。

BYTES

字节数组,将读取到的文本内容转为UTF-8编码的字节数组。

BOOL

布尔型。

DOUBLE

浮点型。

DATE

日期时间类型,支持以下日期时间格式:YYYY-MM-dd HH:mm:ss、yyyy-MM-ddHH:mm:ss

创建数据源

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

关键参数如下:

参数

说明

数据源名称

可自定义数据源名称。数据源名称在工作空间内唯一;必须以字母数字下划线组合,且不能以数字和下划线开头。

地域

Bucket所属的Region,填写地域简称,可参考:地域和访问域名

Bucket

COSBucket名称。

Endpoint

COS的访问域名, 可参考:地域和访问域名

AccessKey ID

对应腾讯云平台的SecretId,前往管理控制台中的 API 密钥管理 页面获取。

AccessKey Secret

对应腾讯云平台的SecretKey,前往管理控制台中的 API 密钥管理 页面获取。

数据同步任务开发

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

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

操作流程请参见向导模式配置脚本模式配置。脚本模式配置的全量参数和脚本Demo,请参见下文附录:脚本Demo与参数说明。

附录:脚本Demo与参数说明

离线任务脚本配置方式

如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见脚本模式配置,以下为您介绍脚本模式下数据源的参数配置详情。

Reader脚本Demo

{
  "type": "job",
  "version": "2.0",
  "steps": [
    {
      "stepType": "cos",
      "parameter": {
        "datasource": "",
        "object": ["f/z/1.csv"],
        "fileFormat": "csv",
        "encoding": "utf8/gbk/...",
        "fieldDelimiter": ",",
        "useMultiCharDelimiter": true,
        "lineDelimiter": "\n",
        "skipHeader": true,
        "compress": "zip/gzip",
        "column": [
          {
            "index": 0,
            "type": "long"
          },
          {
            "index": 1,
            "type": "boolean"
          },
          {
            "index": 2,
            "type": "double"
          },
          {
            "index": 3,
            "type": "string"
          },
          {
            "index": 4,
            "type": "date"
          }
        ]
      },
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {
      "record": "0"
    },
    "speed": {
      "concurrent": 1
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Reader脚本参数

参数

描述

是否必选

默认值

datasource

数据源名称,脚本模式支持添加数据源,该配置项填写的内容必须和添加的数据源名称保持一致。

fileFormat

源头文件类型。支持csv、text、parquet、orc。

object

文件路径,此参数支持*通配符,支持配置为数组。

例如:您需要同步a/b/1.csva/b/2.csv两个文件,可以配置为a/b/*.csv。

column

读取字段列表,type指定源数据的类型,index指定当前列来自于文本第几列(以0开始),value指定当前类型为常量,不是从源头文件读取数据,而是根据value值自动生成对应的列。

默认情况下,您可以全部按照String类型读取数据,配置如下。

"column": ["*"]

也可以指定column字段信息,配置如下。

"column":    
    {       
        "type": "long",       
        "index": 0 //从COS文本第一列获取int字段。
    },    
    {       
        "type": "string",       
        "value": "alibaba" //从COS内部生成alibaba的字符串字段作为当前字段。    
}
说明

所指定的column信息,type必须填写,indexvalue必须选择其一。

全部按照STRING类型读取。

fieldDelimiter

读取的字段分隔符。COS Reader在读取数据时,需要指定字段分隔符,如果不指定,默认为英文逗号',',界面配置中也会默认回填英文逗号。如果分隔符不可见,请填写Unicode编码。例如:\u001b\u007c

,

lineDelimiter

读取的行分隔符。当fileFormat取值为text时,本参数有效。

compress

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

不压缩

encoding

读取文件的编码配置。

utf-8

nullFormat

文本文件中无法使用标准字符串定义null(空指针),数据同步系统提供nullFormat定义哪些字符串可以表示为null。例如:

  • 配置nullFormat:"null",等同于“可见字符”,如果源头数据是null,则数据同步视作null字段,写入目标表。

  • 配置nullFormat:"\u0001",等同于“不可见字符”,如果源头数据是字符串"\u0001",则将该字段视作null字段,写入目标表。

  • 不写nullFormat这个参数,等同于“未配置”,代表来源是什么数据就直接按照什么数据写入目标端,不作任何转换。

skipHeader

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

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

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

说明

压缩文件模式下不支持skipHeader

false

parquetSchema

Parquet文件格式读取COS文件时需配置,当且仅当fileFormatparquet时生效,是用于描述数据结构的定义。通用格式如下:

message MessageType名 {
是否必填 数据类型 列名;
是否必填 数据类型 列名;
......................;
}

parquetSchema的配置格式说明:

  • MessageType名:填写名称。

  • 是否必填:required表示非空,optional表示可为空。推荐全部填写optional。

  • 数据类型:Parquet文件支持BOOLEAN、Int32、Int64、Int96、FLOAT、DOUBLE、BINARY(如果是字符串类型,请填BINARY)和fixed_len_byte_array类型。每行列设置必须以分号结尾,最后一行也要写上分号。

配置示例如下所示。

{"parquetSchema": "message UserProfile 
{ optional int32 minute_id; 
  optional int32 dsp_id; 
  optional int32 adx_pid; 
  optional int64 req; 
  optional int64 res; 
  optional int64 suc; 
  optional int64 imp; 
  optional double revenue; }"
}

csvReaderConfig

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