ChunJun FTP Connector 功能擴(kuò)展解讀
本文將從 FTP Connector 的功能詳解,自定義文件切割及自定義 FileFormat 三個(gè)方面為大家?guī)?ChunJun FTP Connector 的功能擴(kuò)展分享。
FTP Connector 詳解
FTP 是用于在網(wǎng)絡(luò)上進(jìn)行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應(yīng)用層,提供一種在服務(wù)器和客戶機(jī)之間上傳和下載文件的有效方式。
FTP Connector 基本功能
ChunJun FTP Connector 基本功能如下:
· 支持 FTP 協(xié)議 與 SFTP 協(xié)議讀寫;
· 支持?jǐn)帱c(diǎn)續(xù)傳;
· 支持并發(fā)讀寫;
· 支持多種文件格式的讀寫。
斷點(diǎn)續(xù)傳
主要的類:Position,Data,F(xiàn)tpFileReader,代碼如下:


并發(fā)讀寫
代碼如下:

自定義文件切割
ConcurrentFileSplitFactory 像一個(gè)工廠,通過這個(gè)工廠去創(chuàng)建其他的類,包括 ConcurrentZipCompressSplit、ConcurrentCsvSplit 以及默認(rèn)的 DefaultFileSplit,類結(jié)構(gòu)如下圖:

處理流程
FTP 讀取文件時(shí),通過 ConcurrentFileSplit 對文件進(jìn)行切割,切割成多個(gè) FTPFileSplit,配置到 Channel 中,最后根據(jù) FileSplit 保存的信息,自定義讀取文件。

處理邏輯
· 使用 maxFetchSize 配置,當(dāng)同步的文件大于這個(gè)值時(shí),開啟大文件切割功能
· 對文件進(jìn)行分析,構(gòu)建分片,以文件大小1.2G、分片數(shù)4舉例,每個(gè)分片數(shù)處理的數(shù)據(jù)量約等于1.2G / 4 = 300M
其中使用的分片構(gòu)建算法邏輯如下:
1)從第300M偏移量開始讀文件,按單個(gè)字節(jié)遍歷文件,記錄下一個(gè)'\n'的文件偏移量,如300.1M,第一個(gè)分片處理文件的范圍就是0~ 300.1M
2)第二個(gè)分片從 300.1M + 300M開始讀文件,遍歷文件,記錄下一個(gè)'\n'的文件偏移量,如600.3M,第二個(gè)分片處理文件的范圍就是300.1M~ 600.3M
3)以此類推, 構(gòu)建完所有的分片
· 單個(gè)文件的數(shù)據(jù)在多個(gè)通道并發(fā)讀取后,寫入目標(biāo)表時(shí),無法對多個(gè)通道的數(shù)據(jù)按原文件中記錄的順序進(jìn)行寫入
單個(gè)并行度讀取耗時(shí)為122s:

8個(gè)并行度讀取平均耗時(shí)為88s:

自定義 FileFormat
自定義 FlieFormat 同樣是以工廠模式實(shí)現(xiàn)的,ChunJun 目前已實(shí)現(xiàn) Excel、Csv、Text 三種文件結(jié)構(gòu),當(dāng)前仍然局限于 FTP,后續(xù)會擴(kuò)展成公共模塊,獨(dú)屬于 ChunJun 的 Format。類結(jié)構(gòu)如下圖:

ChunJun 設(shè)計(jì)方案
FTP 增加的功能點(diǎn)如下:
· FTP支持用戶自定義解析方式;
· FTP 支持自定義數(shù)據(jù)轉(zhuǎn)換。
針對上述新增功能點(diǎn) ChunJun 設(shè)計(jì)方案如下:
· FTP soource 新增參數(shù) customFormatClassName:自定義解析器類名
· 抽象出公共模塊,定義解析器接口 IFileReadFormat ,解析方式由用戶實(shí)現(xiàn)以及 ChunJun 自帶的實(shí)現(xiàn)
大量具體代碼請看視頻教程??:
視頻課程&PPT獲取
視頻課程:
https://www.bilibili.com/video/BV1Gm4y1a7Fv/?spm_id_from=333.999.0.0
課件獲?。?/p>
https://www.dtstack.com/resources/1044
《數(shù)據(jù)治理行業(yè)實(shí)踐白皮書》下載地址:https://fs80.cn/l134d5?
《數(shù)棧V6.0產(chǎn)品白皮書》下載地址:https://fs80.cn/cw0iw1
想了解或咨詢更多有關(guān)袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbzhan
同時(shí),歡迎對大數(shù)據(jù)開源項(xiàng)目有興趣的同學(xué)加入「袋鼠云開源框架釘釘技術(shù) qun」,交流最新開源技術(shù)信息,qun 號碼:30537511,項(xiàng)目地址:https://github.com/DTStack