遼寧公司網(wǎng)站建設(shè)一條龍全包(ftpsclient)ftpd_full_access,
原標(biāo)題:ChunJun FTP Connector 功能擴展解讀本文將從 FTP Connector 的功能詳解,自定義文件切割及自定義 FileFormat 三個方面為大家?guī)?ChunJun FTP Connector 的功能擴展分享。
FTP Connector 詳解FTP 是用于在網(wǎng)絡(luò)上進(jìn)行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應(yīng)用層,提供一種在服務(wù)器和客戶機之間上傳和下載文件的有效方式。
FTP Connector 基本功能ChunJun FTP Connector 基本功能如下:· 支持 FTP 協(xié)議 與 SFTP 協(xié)議讀寫;· 支持?jǐn)帱c續(xù)傳;· 支持并發(fā)讀寫;· 支持多種文件格式的讀寫。
斷點續(xù)傳主要的類:Position,Data,F(xiàn)tpFileReader,代碼如下:
并發(fā)讀寫代碼如下:
自定義文件切割ConcurrentFileSplitFactory 像一個工廠,通過這個工廠去創(chuàng)建其他的類,包括 ConcurrentZipCompressSplit、ConcurrentCsvSplit 以及默認(rèn)的 DefaultFileSplit,類結(jié)構(gòu)如下圖:
處理流程FTP 讀取文件時,通過 ConcurrentFileSplit 對文件進(jìn)行切割,切割成多個 FTPFileSplit,配置到 Channel 中,最后根據(jù) FileSplit 保存的信息,自定義讀取文件。
處理邏輯· 使用 maxFetchSize 配置,當(dāng)同步的文件大于這個值時,開啟大文件切割功能· 對文件進(jìn)行分析,構(gòu)建分片,以文件大小1.2G、分片數(shù)4舉例,每個分片數(shù)處理的數(shù)據(jù)量約等于1.2G / 4 = 300M
其中使用的分片構(gòu)建算法邏輯如下:1)從第300M偏移量開始讀文件,按單個字節(jié)遍歷文件,記錄下一個 的文件偏移量,如300.1M,第一個分片處理文件的范圍就是0~ 300.1M2)第二個分片從 300.1M + 300M開始讀文件,遍歷文件,記錄下一個 的文件偏移量,如600.3M,第二個分片處理文件的范圍就是300.1M~ 600.3M
3)以此類推, 構(gòu)建完所有的分片· 單個文件的數(shù)據(jù)在多個通道并發(fā)讀取后,寫入目標(biāo)表時,無法對多個通道的數(shù)據(jù)按原文件中記錄的順序進(jìn)行寫入單個并行度讀取耗時為122s:
8個并行度讀取平均耗時為88s:
自定義 FileFormat自定義 FlieFormat 同樣是以工廠模式實現(xiàn)的,ChunJun 目前已實現(xiàn) Excel、Csv、Text 三種文件結(jié)構(gòu),當(dāng)前仍然局限于 FTP,后續(xù)會擴展成公共模塊,獨屬于 ChunJun 的 Format。
類結(jié)構(gòu)如下圖:
ChunJun 設(shè)計方案FTP 增加的功能點如下:· FTP支持用戶自定義解析方式;· FTP 支持自定義數(shù)據(jù)轉(zhuǎn)換針對上述新增功能點 ChunJun 設(shè)計方案如下:· FTP soource 新增參數(shù) customFormatClassName:自定義解析器類名。
· 抽象出公共模塊,定義解析器接口 IFileReadFormat ,解析方式由用戶實現(xiàn)以及 ChunJun 自帶的實現(xiàn)大量具體代碼請看視頻教程??:視頻課程&PPT獲取 視頻課程: https://www.bilibili.com/video/BV1Gm4y1a7Fv/?spm_id_from=333.999.0.0
課件獲?。? https://www.dtstack.com/resources/1044《數(shù)據(jù)治理行業(yè)實踐白皮書》下載地址:https://fs80.cn/380a4b《數(shù)棧V6.0產(chǎn)品白皮書》下載地址:https://fs80.cn/cw0iw1
想了解或咨詢更多有關(guān)袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szsohu同時,歡迎對大數(shù)據(jù)開源項目有興趣的同學(xué)加入「袋鼠云開源框架釘釘技術(shù) qun」,交流最新開源技術(shù)信息,qun 號碼:30537511,項目地址:https://github.com/DTStack
返回搜狐,查看更多責(zé)任編輯: