FTP資料來源
FTP資料來源為您提供讀取和寫入FTP雙向通道的功能,本文為您介紹DataWorks的FTP資料同步的能力支援情況。
使用限制
FTP Reader實現了從遠程FTP檔案讀取資料並轉為資料同步協議的功能,遠程FTP檔案本身是無結構化資料存放區。對於資料同步而言,目前FTP Reader支援的功能如下所示:
|
支援 |
不支援 |
|
|
FTP Writer實現了從Data Integration協議轉為FTP檔案功能,FTP檔案本身是無結構化資料存放區。目前FTP Writer支援的功能如下:
|
支援 |
不支援 |
|
|
支援的欄位類型
遠程FTP檔案本身不提供資料類型,該類型是DataX FtpReader定義。
|
DataX內部類型 |
遠程FTP檔案資料類型 |
|
LONG |
LONG |
|
DOUBLE |
DOUBLE |
|
STRING |
STRING |
|
BOOLEAN |
BOOLEAN |
|
DATE |
DATE |
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見資料來源管理,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
資料同步任務開發
資料同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
-
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
附錄:指令碼Demo與參數說明
離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見指令碼模式配置,以下為您介紹指令碼模式下資料來源的參數配置詳情。
Reader指令碼Demo
{
"type":"job",
"version":"2.0",//版本號碼。
"steps":[
{
"stepType":"ftp",//外掛程式名。
"parameter":{
"path":[],//檔案路徑。
"nullFormat":"",//null值。
"compress":"",//壓縮格式。
"datasource":"",//資料來源。
"column":[//欄位。
{
"index":0,//序號。
"type":""//欄位類型。
}
],
"skipHeader":"",//是否包含表頭。
"fieldDelimiter":",",//資料行分隔符號。
"encoding":"UTF-8",//編碼格式。
"fileFormat":"csv"//文本類型。
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//錯誤記錄數。
},
"speed":{
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":1 //作業並發數。
"mbps":"12",//限流,此處1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Reader指令碼參數
|
參數 |
描述 |
是否必選 |
預設值 |
|
datasource |
資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須要與添加的資料來源名稱保持一致。 |
是 |
無 |
|
path |
遠程FTP檔案系統的路徑和檔案名稱資訊,需要填寫包含路徑和檔案尾碼的完整檔案路徑和檔案名稱。這裡可以支援填寫多個路徑。
說明
|
是 |
無 |
|
column |
讀取欄位列表,type指定來源資料的類型,index指定當前列來自於文本第幾列(以0開始),value指定當前類型為常量,不從源標頭檔讀取資料,而是根據value值自動產生對應的列。 預設情況下,您可以全部按照STRING類型讀取資料,配置為
對於您指定的column資訊,type必須填寫,index和value必須選擇其一。 |
是 |
無 |
|
fieldDelimiter |
讀取的欄位分隔符號。 說明
FTP Reader在讀取資料時,需要指定欄位分割符,如果不指定會預設為(,),介面配置也會預設填寫(,)。 |
是 |
, |
|
skipHeader |
類CSV格式檔案可能存在表頭為標題情況,需要跳過。預設不跳過,壓縮檔模式下不支援skipHeader。 |
否 |
false |
|
encoding |
讀取檔案的編碼配置。 |
否 |
utf-8 |
|
nullFormat |
文字檔中無法使用標準字串定義null(null 指標),資料同步提供nullFormat定義哪些字串可以表示為null。 例如:
|
否 |
無 |
|
markDoneFileName |
標檔檔案名稱,資料同步前檢查標檔檔案。如果標檔檔案不存在,等待一段時間重新檢查標檔檔案,如果檢查到標檔檔案,則開始執行同步任務。 |
否 |
無 |
|
maxRetryTime |
表示檢查標檔檔案重試次數,預設重試60次,每一次稍候再試為1分鐘,共60分鐘。 |
否 |
60 |
|
csvReaderConfig |
讀取CSV類型檔案參數配置為Map類型。讀取CSV類型檔案使用的CsvReader進行讀取,會有很多配置,不配置則使用預設值。 |
否 |
無 |
|
fileFormat |
讀取的檔案類型,預設情況下檔案作為CSV格式檔案進行讀取,內容被解析為邏輯上的二維表結構處理。如果您配置為binary,則表示按照純粹二進位格式進行複製傳輸。 通常在FTP、OSS等儲存之間進行目錄結構點對點複寫時使用,通常無需配置該項。 |
否 |
無 |
Writer指令碼Demo
{
"type":"job",
"version":"2.0",//版本號碼。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"ftp",//外掛程式名。
"parameter":{
"path":"",//檔案路徑。
"fileName":"",//檔案名稱。
"nullFormat":"null",//null值。
"dateFormat":"yyyy-MM-dd HH:mm:ss",//時間格式。
"datasource":"",//資料來源。
"writeMode":"",//寫入模式。
"fieldDelimiter":",",//資料行分隔符號。
"encoding":"",//編碼格式。
"fileFormat":""//文本類型。
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//錯誤記錄數。
},
"speed":{
"throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent":1, //作業並發數。
"mbps":"12"//限流,此處1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Writer指令碼參數
|
參數 |
描述 |
是否必選 |
預設值 |
|
datasource |
資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須要與添加的資料來源名稱保持一致。 |
是 |
無 |
|
timeout |
串連FTP伺服器連線逾時時間,單位毫秒。 |
否 |
60,000(1分鐘) |
|
path |
FTP檔案系統的路徑資訊,FTP Writer會寫入Path目錄下多個檔案。 |
是 |
無 |
|
fileName |
FTP Writer寫入的檔案名稱,該檔案名稱會添加隨機的尾碼作為每個線程寫入實際檔案名稱。 |
是 |
無 |
|
singleFileOutput |
FtpWriter寫入的檔案名稱受fileName控制,預設行會添加隨機的尾碼作為每個線程寫入實際檔案名稱。如果您不需要預設添加的隨機尾碼,您可以將singleFileOutput配置為true,寫出檔案名稱將會是您指定的完整檔案名稱。 |
否 |
false |
|
writeMode |
FTP Writer寫入前資料清理處理模式:
|
是 |
無 |
|
fieldDelimiter |
寫入的欄位分隔符號。 |
是,單字元 |
無 |
|
skipHeader |
類CSV格式檔案可能存在表頭為標題情況,需要跳過。預設不跳過,壓縮檔模式下不支援skipHeader。 |
否 |
false |
|
compress |
支援gzip和bzip2兩種壓縮形式。 |
否 |
無壓縮 |
|
encoding |
讀取檔案的編碼配置。 |
否 |
utf-8 |
|
nullFormat |
文字檔中無法使用標準字串定義null(null 指標),Data Integration提供nullFormat定義哪些字串可以表示為null。 例如您配置 |
否 |
無 |
|
dateFormat |
日期類型的資料序列化到檔案中時的格式,例如"dateFormat":"yyyy-MM-dd"。 |
否 |
無 |
|
fileFormat |
檔案寫出的格式,包括CSV和TEXT兩種,CSV是嚴格的CSV格式,如果待寫資料包括資料行分隔符號,則會按照CSV的轉義文法轉義,轉義符號為雙引號。TEXT格式是用資料行分隔符號簡單分割待寫資料,對於待寫資料包括資料行分隔符號情況下不做轉義。 |
否 |
TEXT |
|
header |
header:txt文本(包括csv、text等)寫出時的表頭,指令碼模式支援配置表頭資訊,例如"header":["id","name","age"],表示將id、name、age作為表頭寫入ftp檔案的第一行。 |
否 |
無 |
|
markDoneFileName |
|
否 |
無 |