全部產品
Search
文件中心

DataWorks:Azure Blob Storage資料來源

更新時間:Sep 04, 2026

Azure Blob Storage資料來源為您提供讀取和寫入檔案的能力,您可以使用本資料來源,擷取Azure Blob Storage中儲存的檔案,解析並同步至任意目標資料來源;也可以將任意來來源資料源的資料寫入Azure Blob Storage。本文為您介紹DataWorks的Azure Blob Storage資料同步的能力支援情況。

使用限制

Azure Blob Storage資料來源,支援以下的資料類型。

資料類型

說明

STRING

文本類型。

LONG

整型。

BYTES

位元組數組,將讀取到的常值內容轉為UTF-8編碼的位元組數組。

BOOL

布爾型。

DOUBLE

浮點型。

DATE

日期時間類型,支援以下日期時間格式:

  • YYYY-MM-dd HH:mm:ss

  • yyyy-MM-dd

  • HH:mm:ss

建立資料來源

在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見配置資料來源,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。

資料同步任務開發

資料同步任務的配置入口和通用配置流程可參見下文的配置指導。

單表離線同步任務配置指導

附錄:指令碼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

源標頭檔類型。支援csv、text、parquet、orc、json、jsonl。

是

無

object

檔案路徑,當fileFormat取值為csv、text、json、jsonl時使用。

說明

此參數支援*萬用字元,支援配置為數組。

例如:您需要同步a/b/1.csv和a/b/2.csv兩個檔案,可以配置為a/b/*.csv。

是

fileFormat取值為csv、text、json、jsonl時必填。

無

path

檔案路徑,當fileFormat取值為parquet、orc時使用。

說明

此參數支援*萬用字元,支援配置為數組。

例如:您需要同步a/b/1.orc和a/b/2.orc兩個檔案,可以配置為a/b/*.orc。

是

fileFormat取值為parquet、orc時必填。

無

column

讀取欄位列表,type指定來源資料的類型:

  • CSV/TEXT格式:index指定當前列來自於文本第幾列(以0開始),value指定常量值。

  • JSON/JSONL格式:使用jsonPath指定JSONPath運算式提取欄位,value指定常量值。

預設情況下,您可以全部按照String類型讀取資料,配置如下。

column": ["*"]

您可以指定column欄位資訊,配置如下。

// CSV/TEXT格式
                    "column":    
    {       
        "type": "long",       
        "index": 0 //從Azure Blob Storage文本第一列擷取int欄位。
    },    
    {       
        "type": "string",       
        "value": "alibaba" //從Azure Blob Storage Reader內部產生alibaba的字串欄位作為當前欄位。    
}
// JSON/JSONL格式
"column":    
{       
"name": "id",       
"jsonPath": "$.id",       
"type": "LONG"
},    
{       
"name": "name",       
"jsonPath": "$.user.name",       
"type": "STRING"
},    
{       
"name": "source",       
"value": "azure",       
"type": "STRING"
}
說明

對於您指定的column資訊,type必須填寫。CSV/TEXT格式下index和value二選一;JSON/JSONL格式下jsonPath和value二選一。

是

全部按照STRING類型讀取。

fieldDelimiter

讀取的欄位分隔符號。

說明
  • Azure Blob Storage Reader在讀取資料時,需要指定欄位分割符,如果不指定,預設為(,),介面配置中也會預設填寫為(,)。

  • 如果分隔字元不可見,請填寫Unicode編碼。例如:\u001b、\u007c。

是

,

lineDelimiter

讀取的行分隔字元。

說明

當fileFormat取值為text時,本參數有效。

否

無

compress

文本壓縮類型,預設不填寫(即不壓縮)。支援壓縮類型為gzip、bzip2和zip。

否

不壓縮

encoding

讀取檔案的編碼配置。

否

utf-8

nullFormat

文字檔中無法使用標準字串定義null(null 指標),資料同步系統提供nullFormat定義哪些字串可以表示為null。例如:

  • 配置nullFormat:"null",等同於“可見字元”,如果源頭資料是null,則資料同步視作null欄位。

  • 配置nullFormat:"\u0001",等同於“不可見字元”,如果源頭資料是字串"\u0001",則資料同步視作null欄位。

  • 不寫"nullFormat"這個參數,等同於“未配置”,代表來源是什麼資料就直接按照什麼資料寫入目標端,不做任何轉換。

否

無

skipHeader

CSV格式檔案通過skipHeader配置是否讀取表頭內容。

  • True:同步資料來源的時候讀取表頭內容。

  • False:同步資料來源的時候不讀取表頭內容。

說明

壓縮檔模式下不支援skipHeader。

否

false

parquetSchema

以Parquet檔案格式讀取Azure Blob Storage時配置,若且唯若fileFormat為parquet時生效,具體表示parquet儲存的類型說明。您需要確保填寫parquetSchema後,整體配置符合JSON文法。

message MessageType名 {
是否必填, 資料類型, 列名;
......................;
}

parquetSchema的配置格式說明如下:

  • MessageType名:填寫名稱。

  • 是否必填:required表示非空,optional表示可為空白。推薦全部填寫optional。

  • 資料類型:Parquet檔案支援BOOLEAN、Int32、Int64、Int96、FLOAT、DOUBLE、BINARY(如果是字串類型,請填BINARY)和fixed_len_byte_array類型。

  • 每行列設定必須以分號結尾,最後一行也要寫上分號。

配置樣本如下所示。

"parquetSchema": "message m { 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進行讀取,不配置則使用預設值。

否

無

maxRetryTimes

檔案下載失敗時的最大重試次數。

說明
  • 配置0表示關閉該功能。

  • 進階模式,嚮導模式不支援此參數的配置。

否

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寫入的檔案名稱(含路徑首碼),使用檔案名稱類比目錄,分隔字元為(/)。

  • 使用"object": "datax.csv",寫入的Object以datax開頭,多檔案寫入時尾碼添加隨機UUID字串。

  • 使用"object": "cdo/datax.csv",寫入的Object以cdo/datax開頭。

  • 若您不需要尾碼隨機UUID,可配置"writeSingleObject": "true",詳情請參見writeSingleObject說明。

是

無

writeMode

Azure Blob Storage Writer寫入前資料的處理:

  • truncate:寫入前清理Object名稱首碼匹配的所有Object。例如"object":"abc",將清理所有abc開頭的Object。

  • append:寫入前不進行任何處理,直接使用Object名稱寫入,多檔案寫入時使用隨機UUID尾碼名保證檔案名稱不衝突。

  • nonConflict:寫入前校正指定Object是否已存在,若存在直接報錯。

是

無

writeSingleObject

寫資料時是否寫單個檔案:

  • true:所有並發任務通過Block Blob分塊上傳寫入同一個Object,當讀不到任何資料時不會產生空檔案。

  • false:每個並發任務寫入獨立Object,檔案名稱追加隨機UUID尾碼,當讀不到任何資料時若配置了header會輸出僅含檔案頭的空檔案,否則不輸出檔案。

說明

寫入parquet、orc格式時該參數不生效。

否

false

fileFormat

檔案寫出格式,支援以下幾種:

  • csv:僅支援嚴格的csv格式。如果待寫資料包括資料行分隔符號,則會根據csv的轉義文法轉義,轉義符號為雙引號(")。

  • text:使用資料行分隔符號簡單分割待寫資料,對於待寫資料包括資料行分隔符號情況下不進行轉義。

  • jsonl:JSON Lines格式寫出,每行一個JSON對象。

  • parquet:需增加parquetSchema參數定義資料類型,僅支援指令碼模式。

  • orc:需轉指令碼模式配置。

否

text

fieldDelimiter

寫入的欄位分隔符號。csv、text格式有效,如果不指定預設為(,)。如果分隔字元不可見,請填寫Unicode編碼,例如\u001b、\u007c。

否

,

encoding

寫出檔案的編碼配置。

否

utf-8

nullFormat

文字檔中無法使用標準字串定義null(null 指標),資料同步系統提供nullFormat定義哪些字串可以表示為null。例如配置nullFormat:"null",如果源頭資料是null,資料同步系統會視作null欄位。

否

\N

dateFormat

日期類型資料的格式化格式。

否

yyyy-MM-dd HH:mm:ss

header

寫出檔案的表頭,例如["id", "name", "age"]。csv、text格式有效,寫入第一個分塊的最前面。

否

無

blockSizeInMB

Block Blob分塊上傳時單個分塊的大小,單位MB。Azure Block Blob最多支援50000個分塊,單塊大小範圍為4MB~100MB。若分塊數量超出限制,可調大分塊大小以支援更大的檔案上傳。 說明 * 進階模式,嚮導模式不支援此參數的配置。 * 僅對text、csv、jsonl格式生效。

否

64

parquetSchema

以Parquet檔案格式寫入時的必填項,用來描述目標檔案的結構,若且唯若 fileFormat 為 parquet 時生效。格式如下。

parquetSchema的配置格式說明如下:

  • MessageType名:填寫名稱。

  • 是否必填:required表示非空,optional表示可為空白。推薦全部填寫optional。

  • 資料類型:Parquet檔案支援BOOLEAN、Int32、Int64、Int96、FLOAT、DOUBLE、BINARY(如果是字串類型,請填BINARY)和fixed_len_byte_array類型。

  • 每行列設定必須以分號結尾,最後一行也要寫上分號。

配置樣本如下所示。

"parquetSchema": "message m { 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; }"

否

無

column

寫入parquet、orc格式時配置的目標列資訊,格式為{"name":"列名","type":"列類型"}。

否

無

compress

寫入parquet、orc檔案的壓縮格式,例如SNAPPY、NONE等。text、csv、jsonl格式不支援壓縮。

否

無

maxRetryTimes

寫入(上傳分塊、提交分塊列表、刪除Object等)失敗時的最大重試次數。配置0表示關閉重試。 說明 進階模式,嚮導模式不支援此參數的配置。

否

30

retryIntervalSeconds

寫入失敗時稍候再試,單位秒。 僅指令碼模式支援,嚮導模式不支援此參數的配置。

否

5

requestTimeoutSeconds

單次請求逾時時間,單位秒。 僅指令碼模式支援,嚮導模式不支援此參數的配置。

否

60