Azure Blob Storage数据源为您提供读取和写入文件的能力,您可以使用本数据源,获取Azure Blob Storage中存储的文件,解析并同步至任意目标数据源;也可以将任意来源数据源的数据写入Azure Blob Storage。本文为您介绍DataWorks的Azure Blob Storage数据同步的能力支持情况。
使用限制
Azure Blob Storage数据源,支持以下的数据类型。
|
数据类型 |
说明 |
|
STRING |
文本类型。 |
|
LONG |
整型。 |
|
BYTES |
字节数组,将读取到的文本内容转为UTF-8编码的字节数组。 |
|
BOOL |
布尔型。 |
|
DOUBLE |
浮点型。 |
|
DATE |
日期时间类型,支持以下日期时间格式:
|
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见配置数据源,详细的配置参数解释可在配置界面查看对应参数的文案提示。
数据同步任务开发
数据同步任务的配置入口和通用配置流程可参见下文的配置指导。
单表离线同步任务配置指导
-
脚本模式配置的全量参数和脚本Demo,请参见下文附录:脚本Demo与参数说明。
附录:脚本Demo与参数说明
离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见脚本模式配置,以下为您介绍脚本模式下数据源的参数配置详情。
Reader脚本Demo
以下为从 Azure Blob Storage 读取数据的脚本模式配置示例,writer 侧以 stream 占位,实际使用时请替换为目标数据源的配置。
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "azureblob",
"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 |
源头文件类型。支持 |
是 |
无 |
|
object |
文件路径,当fileFormat取值为csv、text、json、jsonl时使用。 说明
此参数支持 例如:您需要同步 |
是 fileFormat取值为csv、text、json、jsonl时必填。 |
无 |
|
path |
文件路径,当fileFormat取值为parquet、orc时使用。 说明
此参数支持 例如:您需要同步 |
是 fileFormat取值为parquet、orc时必填。 |
无 |
|
column |
读取字段列表,type指定源数据的类型:
默认情况下,您可以全部按照String类型读取数据,配置如下。
您可以指定column字段信息,配置如下。
说明
对于您指定的column信息,type必须填写。CSV/TEXT格式下index和value二选一;JSON/JSONL格式下jsonPath和value二选一。 |
是 |
全部按照STRING类型读取。 |
|
fieldDelimiter |
读取的字段分隔符。 说明
|
是 |
, |
|
lineDelimiter |
读取的行分隔符。 说明
当fileFormat取值为text时,本参数有效。 |
否 |
无 |
|
compress |
文本压缩类型,默认不填写(即不压缩)。支持压缩类型为 |
否 |
不压缩 |
|
encoding |
读取文件的编码配置。 |
否 |
utf-8 |
|
nullFormat |
文本文件中无法使用标准字符串定义null(空指针),数据同步系统提供nullFormat定义哪些字符串可以表示为null。例如:
|
否 |
无 |
|
skipHeader |
CSV格式文件通过skipHeader配置是否读取表头内容。
说明
压缩文件模式下不支持skipHeader。 |
否 |
false |
|
parquetSchema |
以Parquet文件格式读取Azure Blob Storage时配置,当且仅当fileFormat为parquet时生效,具体表示parquet存储的类型说明。您需要确保填写parquetSchema后,整体配置符合JSON语法。
parquetSchema的配置格式说明如下:
配置示例如下所示。
|
否 |
无 |
|
csvReaderConfig |
读取CSV类型文件参数配置为Map类型。读取CSV类型文件使用的CsvReader进行读取,不配置则使用默认值。 |
否 |
无 |
|
maxRetryTimes |
文件下载失败时的最大重试次数。 说明
|
否 |
0 |
|
retryIntervalSeconds |
文件下载失败时重试间隔,单位秒。 说明
高级模式,向导模式不支持此参数的配置。 |
否 |
5 |
Writer脚本Demo
以下为将数据写入Azure Blob Storage的脚本模式配置示例,reader侧以stream占位,实际使用时请替换为来源数据源的配置。
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "azureblob",
"parameter": {
"datasource": "",
"fileFormat": "csv",
"object": "dir/example.csv",
"fieldDelimiter": ",",
"lineDelimiter": "\n",
"encoding": "UTF-8",
"nullFormat": "null",
"dateFormat": "yyyy-MM-dd",
"writeMode": "truncate",
"maxFileSize": 100,
"writeSingleObject": false
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 1
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Writer脚本参数
|
参数 |
描述 |
是否必选 |
默认值 |
|
datasource |
数据源名称,脚本模式支持添加数据源,该配置项填写的内容必须与添加的数据源名称保持一致。数据源中需配置Azure Blob Storage容器的SAS URL与签名(sig)。 |
是 |
无 |
|
object |
Azure Blob Storage Writer写入的文件名(含路径前缀),使用文件名模拟目录,分隔符为(/)。
|
是 |
无 |
|
writeMode |
Azure Blob Storage Writer写入前数据的处理:
|
是 |
无 |
|
writeSingleObject |
写数据时是否写单个文件:
说明
写入parquet、orc格式时该参数不生效。 |
否 |
false |
|
fileFormat |
文件写出格式,支持以下几种:
|
否 |
text |
|
fieldDelimiter |
写入的字段分隔符。csv、text格式有效,如果不指定默认为(,)。如果分隔符不可见,请填写Unicode编码,例如 |
否 |
, |
|
encoding |
写出文件的编码配置。 |
否 |
utf-8 |
|
nullFormat |
文本文件中无法使用标准字符串定义null(空指针),数据同步系统提供nullFormat定义哪些字符串可以表示为null。例如配置 |
否 |
\N |
|
dateFormat |
日期类型数据的格式化格式。 |
否 |
|
|
header |
写出文件的表头,例如 |
否 |
无 |
|
blockSizeInMB |
Block Blob分块上传时单个分块的大小,单位MB。Azure Block Blob最多支持50000个分块,单块大小范围为4MB~100MB。若分块数量超出限制,可调大分块大小以支持更大的文件上传。 说明 * 高级模式,向导模式不支持此参数的配置。 * 仅对text、csv、jsonl格式生效。 |
否 |
64 |
|
parquetSchema |
以Parquet文件格式写入时的必填项,用来描述目标文件的结构,当且仅当 fileFormat 为 parquet 时生效。格式如下。 parquetSchema的配置格式说明如下:
配置示例如下所示。
|
否 |
无 |
|
column |
写入parquet、orc格式时配置的目标列信息,格式为 |
否 |
无 |
|
compress |
写入parquet、orc文件的压缩格式,例如 |
否 |
无 |
|
maxRetryTimes |
写入(上传分块、提交分块列表、删除Object等)失败时的最大重试次数。配置0表示关闭重试。 说明 高级模式,向导模式不支持此参数的配置。 |
否 |
30 |
|
retryIntervalSeconds |
写入失败时重试间隔,单位秒。 仅脚本模式支持,向导模式不支持此参数的配置。 |
否 |
5 |
|
requestTimeoutSeconds |
单次请求超时时间,单位秒。 仅脚本模式支持,向导模式不支持此参数的配置。 |
否 |
60 |