Simple Storage Service(簡稱S3)是一種專為從任意位置儲存和檢索任意數量的資料而構建的Object Storage Service,DataWorksData Integration支援使用Amazon S3讀寫資料,本文為您介紹DataWorks的Amazon S3資料來源能力。
使用限制
離線讀
Amazon S3是非結構化資料存放區。對於Data Integration而言,目前Amazon S3 Reader支援的功能如下。
支援 | 不支援 |
|
|
離線寫
Amazon S3 Writer實現了從資料同步協議到Amazon S3中的文字檔的轉換功能,Amazon S3本身是無結構化資料存放區,目前Amazon S3 Writer支援的功能如下。
支援 | 不支援 |
|
|
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見資料來源管理,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
資料同步任務開發
資料同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
附錄:指令碼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。
說明
| 是 | 無 |
column | 讀取欄位列表,type指定來源資料的類型,index指定當前列來自於文本第幾列(以0開始),value指定當前類型為常量,不是從源標頭檔讀取資料,而是根據value值自動產生對應的列。 預設情況下,您可以全部按照String類型讀取資料,配置如下。 您可以指定column欄位資訊,配置如下。 說明 對於您指定的column資訊,type必須填寫,index和value必須選擇其一。 | 是 | 全部按照STRING類型讀取。 |
fieldDelimiter | 讀取的欄位分隔符號。 說明 Amazon S3 Reader在讀取資料時,需要指定欄位分割符,如果不指定預設為(,),介面配置中也會預設填寫為(,)。 如果分隔字元不可見,請填寫Unicode編碼。例如,\u001b、\u007c。 | 是 | 預設值:(,) |
compress | 文本壓縮類型,預設不填寫(即不壓縮)。支援壓縮類型為gzip、bzip2和zip。 | 否 | 不壓縮 |
encoding | 讀取檔案的編碼配置。 | 否 | utf-8 |
nullFormat | 文字檔中無法使用標準字串定義null(null 指標),資料同步系統提供nullFormat定義哪些字串可以表示為null。例如,您配置 | 否 | 無 |
skipHeader | CSV格式檔案通過skipHeader配置是否讀取表頭內容。
說明 壓縮檔模式下不支援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 | 檔案格式支援如下:
| 是 | text |
writeMode |
| 是 | append |
fieldDelimiter | 寫入的欄位分隔符號。 | 否 | 預設值:(,) |
lineDelimiter | 寫入的行分隔字元。 | 否 | 預設值:(\n) |
compress | 文本壓縮類型,預設不填寫(即不壓縮)。
| 否 | 不壓縮 |
nullFormat | 文字檔中無法使用標準字串定義null(null 指標),資料同步系統提供 | 否 | 無 |
header | 寫入時的表頭,例如: | 否 | 無 |
writeSingleObject | true:表示寫單個檔案。false:表示寫多個檔案。 說明
| 否 | false |
encoding | 寫出檔案的編碼配置。 | 否 | utf-8 |
column | 寫出檔案的列配置
| 是 | 無 |