天天看點

大檔案上傳功能在标簽服務的簡單應用和代碼實作

作者:袋鼠雲數棧

各位看官大家好,今天給大家分享的又是一篇實戰文章,希望大家能夠喜歡。

目前「袋鼠雲客戶資料洞察平台」标簽服務的群組按種類劃分,可以分為三大類,分别是實時群組、動态群組以及靜态群組。如果按建立方式劃分則有兩種,分别是通過圈群的方式建立以及通過上傳本地檔案進行次元比對的方式建立得到本地群組,其中本地群組屬于靜态群組。

除了本地群組外的其他群組目前都是采用圈群的方式生成比對 SQL,然後執行相應的 SQL 得到相應查詢次元的資料并入庫到群組表,這種方式比較友善,可以快速得到一個使用者期望的群組。

大檔案上傳功能在标簽服務的簡單應用和代碼實作

但是有那麼一種場景,假設想要設定的條件很分散,通過圈群配置的時候比較複雜,那麼隻能通過上傳檔案的方式進行比對,這就需要使用者上傳本地檔案,通過指定比對次元的方式來生成本地群組。

大檔案上傳功能在标簽服務的簡單應用和代碼實作

如果使用者上傳的本地檔案很小,那麼比較簡單,按單個檔案直接上傳解析即可。如果使用者上傳的檔案很大,有50M,那麼就需要采用分片的方式進行上傳,本文和大家分享一下這兩種檔案上傳的代碼實作。

小檔案上傳的實作

小檔案上傳的主要流程包括将檔案上傳到伺服器,并獲得檔案的編碼格式,檔案上傳完畢後,異步解析檔案并得到本地群組。

将檔案上傳到 HDFS 并儲存原始檔案到 SFTP,上傳到 HDFS 之後,通過 SQL 來與實體對應的大寬表進行資料比對,最終生成本地群組。

大檔案上傳功能在标簽服務的簡單應用和代碼實作

小檔案直接上傳即可,代碼如下,上傳完成後,擷取檔案的編碼格式,用于後續的檔案解析。

大檔案上傳功能在标簽服務的簡單應用和代碼實作

大檔案上傳的實作

前端将大檔案按指定大小分片,并計算原始檔案的 md5 和每個分片檔案的 md5,分别用于檔案校驗以及分片檔案斷點續傳。接口入參代碼設計如下:

大檔案上傳功能在标簽服務的簡單應用和代碼實作

大檔案分片實作部分核心代碼如下:

大檔案上傳功能在标簽服務的簡單應用和代碼實作

分片檔案重新在伺服器整合為一個大檔案的整體代碼如下:

大檔案上傳功能在标簽服務的簡單應用和代碼實作
大檔案上傳功能在标簽服務的簡單應用和代碼實作

單個分片的資料接收并寫入代碼如下:

大檔案上傳功能在标簽服務的簡單應用和代碼實作

當檢測到上傳的檔案是最後一個分片檔案的時候,待分片資料寫入完成後,需要對伺服器上的檔案進行 md5 校驗來保證檔案資料的一緻性。

當檔案上傳到伺服器完成後,需要将檔案上傳到 HDFS 以及SFTP,代碼如下:

大檔案上傳功能在标簽服務的簡單應用和代碼實作
大檔案上傳功能在标簽服務的簡單應用和代碼實作

最終得到的本地群組如下:

大檔案上傳功能在标簽服務的簡單應用和代碼實作
大檔案上傳功能在标簽服務的簡單應用和代碼實作

《資料治理行業實踐白皮書》下載下傳位址:https://fs80.cn/380a4b

《數棧V6.0産品白皮書》下載下傳位址:https://fs80.cn/cw0iw1

想了解或咨詢更多有關袋鼠雲大資料産品、行業解決方案、客戶案例的朋友,浏覽袋鼠雲官網:https://www.dtstack.com/?src=sztth

開源項目位址:https://github.com/DTStack

繼續閱讀