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 |
資料同步任務開發
FTP資料同步任務的配置入口和通用配置流程指導可參見下文的配置指導,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。
建立資料來源
在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源。
單表離線同步任務配置指導
操作流程請參見通過嚮導模式配置離線同步任務、通過指令碼模式配置離線同步任務。
指令碼模式配置的全量參數和指令碼Demo請參見下文的附錄:指令碼Demo與參數說明。
附錄:指令碼Demo與參數說明
附錄:離線任務指令碼配置方式
如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的reader參數和writer參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數和Writer參數的指導詳情。
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 |
| 否 | 無 |