全部產品
Search
文件中心

DataWorks:Amazon S3資料來源

更新時間:Jan 30, 2026

Simple Storage Service(簡稱S3)是一種專為從任意位置儲存和檢索任意數量的資料而構建的Object Storage Service,DataWorksData Integration支援使用Amazon S3讀寫資料,本文為您介紹DataWorks的Amazon S3資料來源能力。

使用限制

離線讀

Amazon S3是非結構化資料存放區。對於Data Integration而言,目前Amazon S3 Reader支援的功能如下。

支援

不支援

  • 支援且僅支援讀取TXT格式的檔案,且要求TXT中Schema為一張二維表。

  • 支援類CSV格式檔案,自訂分隔字元。

  • 支援ORCPARQUET格式。

  • 支援多種類型資料讀取(使用String表示),支援列裁剪和列常量。

  • 支援遞迴讀取、檔案名稱過濾。

  • 支援文本壓縮,現有壓縮格式為gzipbzip2zip

    說明

    一個壓縮包不允許多檔案打包壓縮。

  • 多個Object支援並發讀取。

  • 單個Object(File)不支援多線程並發讀取。

  • 單個Object在壓縮狀態下,不支援多線程並發讀取。

  • 單個Object(File)不能超過100 GB。

離線寫

Amazon S3 Writer實現了從資料同步協議到Amazon S3中的文字檔的轉換功能,Amazon S3本身是無結構化資料存放區,目前Amazon S3 Writer支援的功能如下。

支援

不支援

  • 支援且僅支援寫入文本類型(不支援BLOB,如視頻和圖片)的檔案,並要求文字檔中的Schema為一張二維表。

  • 支援類CSV格式檔案,自訂分隔字元。

  • 支援ORC、PARQUET格式。

    說明

    指令碼模式下支援SNAPPY壓縮格式。

  • 支援多線程寫入,每個線程寫入不同的子檔案。

  • 檔案支援滾動,當檔案大於某個size值時,支援檔案切換。

  • 單個檔案不支援並發寫入。

  • Amazon S3本身不提供資料類型,Amazon S3 Writer均以STRING類型寫入Amazon S3對象。

  • 如果Amazon S3的Bucket儲存類型為冷Archive Storage,則不支援寫入。

  • 單個Object(File)不超過100GB。

建立資料來源

在進行資料同步任務開發時,您需要在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(null 指標),資料同步系統提供nullFormat定義哪些字串可以表示為null。例如,您配置nullFormat="null",那麼如果源頭資料是"null",資料同步系統會視作null欄位。

skipHeader

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

  • True:同步資料時讀取表頭內容。

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

說明

壓縮檔模式下不支援skipHeader

false

csvReaderConfig

讀取CSV類型檔案參數配置為Map類型。讀取CSV類型檔案使用的CsvReader進行讀取,會有很多配置,不配置則使用預設值。

Writer指令碼Demo

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "s3",
            "category": "writer",
            "name": "Writer",
            "parameter": {
                "datasource": "datasource1",
                "object": "test/csv_file.csv",
                "fileFormat": "csv",
                "encoding": "utf8/gbk/...",
                "fieldDelimiter": ",",
                "lineDelimiter": "\n",
                "column": [
                    "0",
                    "1"
                ],
                "header": [
                    "col_bigint",
                    "col_tinyint"
                ],
                "writeMode": "truncate",
                "writeSingleObject": true
            }
        }
    ],
    "setting": {
        "errorLimit": {
            "record": "" //錯誤記錄數。
        },
        "speed": {
            "throttle": true, //當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
            "concurrent": 1 //作業並發數。
            "mbps": "12", //限流,此處1mbps = 1MB/s。
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Writer指令碼參數

參數

描述

是否必選

預設值

datasource

資料來源名稱,指令碼模式支援添加資料來源,該配置項輸入的內容必須和添加的資料來源名稱保持一致。

object

目標對象名稱

fileFormat

檔案格式支援如下:

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

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

  • parquet

  • ORC

text

writeMode

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

  • append:寫入前不進行任何處理,Data IntegrationS3 Writer直接使用Object名稱寫入,並使用隨機UUID的尾碼名來保證檔案名稱不衝突。例如您指定的Object名為Data Integration,實際寫入為DI_xxxx_xxxx_xxxx

  • nonConflict:如果指定路徑出現首碼匹配的Object,直接報錯。例如"object":"abc",如果存在abc123的Object,將直接報錯。

append

fieldDelimiter

寫入的欄位分隔符號。

預設值:(,)

lineDelimiter

寫入的行分隔字元。

預設值:(\n)

compress

文本壓縮類型,預設不填寫(即不壓縮)。

  • 當fileFormat為text或csv時,支援GZIP和BZIP2。

  • 當fileFormat為parquet/orc時,支援SNAPPY壓縮。

不壓縮

nullFormat

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

header

寫入時的表頭,例如:["id", "name", "age"]

writeSingleObject

true:表示寫單個檔案。false:表示寫多個檔案。

說明
  • 當寫入ORC、Parquet類型資料時,writeSingleObject參數不生效,即使用該參數也無法在多並發情境下,寫入單個ORC或Parquet檔案。若要寫入單個檔案,您可以將並發設定為1,但檔案名稱會添加隨機尾碼,並且設定並發為1時,將影響同步任務的速度。

  • 在某些情境下,比如源端為Hologres時,將按照shard分區讀取,單並發依舊可能會產生多個檔案。

false

encoding

寫出檔案的編碼配置。

utf-8

column

寫出檔案的列配置

  • fileFormat為 csv/text時,column 配置為數字預留位置即可,如

    "column":[
     "0",
     "1"
     ]
  • fileFormat為 Parquet/ORC時,需要配置為name,type類型組合

    "column": [
      {
        "name": "col1",
        "type": "BIGINT"
      },
      {
        "name": "col2",
        "type": "DOUBLE"
      }