全部產品
Search
文件中心

DataWorks:Amazon S3資料來源

更新時間:Jun 19, 2024

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

支援的Amazon S3版本

Amazon S3 Reader使用Amazon官網提供的Java SDK擷取S3資料。

使用限制

  • 暫不支援中國內地及中國香港地區的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資料同步任務的配置入口和通用配置流程指導可參見下文的配置指導,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。

建立資料來源

在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源

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

附錄:Amazon S3指令碼Demo與參數說明

附錄:離線任務指令碼配置方式

如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的reader參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數的指導詳情。

Amazon S3 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"
            }
        ]
    }
}

Amazon S3 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進行讀取,會有很多配置,不配置則使用預設值。