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(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(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 |