數據提取概述
Data ingestion is the process of obtaining and importingdata for immediate use or storage in a database. To ingest something is to "take something in or absorb something."Data can be streamed in real time or ingested in batches.
數據提取(Data Ingestion)是獲取和導入數據以供當即使用或存儲在數據庫中的過程。 提取某些東西就是「拿走某些東西或吸取某些東西」。 數據能夠實時流式傳輸或分批提取。
實際項目需求
- 從上游系統接口或文件系統獲取數據(文件)
- 對指定數據進行篩選
- 對指定數據進行轉換
- 傳輸給下游系統(數據庫、數據倉庫、數據湖、流式處理接口)
系統設計
數據提取位於數據湖架構的最下層,用於從上游系統獲取數據傳輸給數據湖,須要實現跨系統分佈式查詢,對於下游系統也要求兼容各類數據平臺和產品。REST API是不少數據系統及平臺都支持的功能,而REST架構風格傾向於採用JSON數據格式,因此此係統在向下遊系統傳輸的數據格式傾向於使用JSON數據格式。
目前識別的系統包括:文件系統、REST API、ElasticSearch查詢接口(REST API)
文件系統需支持基本數據格式,如CSV格式、Excel格式,同時也應支持JSON數據格式。對於Excel格式,因其有豐富的展現形式,可能須要進行預處理,好比去除Excel報表中的表頭或提取固定Sheet中的數據內容。對於CSV格式須要定義或從文件中提取各字段名稱。對於REST API應支持多種形式的驗證,如Basic驗證和OAuth驗證。對於同一REST API可能須要根據不一樣的參數進行查詢,咱們須要設計可定製化、可分頁查詢機制知足其要求。
提取規則包括:數據提取包括讀取節點設置,用於指定讀取的位置,如Excel中的Sheet或單元格位置和JSON數據中的節點位置;讀取數據捲尺寸設置,根據數據捲尺寸分頁數據集向下遊系統傳遞以知足下游系統對數據接收限制的要求,如某系統可能只能接收2M的文件。
轉化規則包括:根據特定字段彙集數據並將其他字段轉化爲集合,如多條CSV數據根據主要字段合併成一條JSON數據。自定義轉換規則,如將數據中的數字1轉換爲星期一等。
調用下游系統REST API接口進行數據發送,按配置經過API驗證,如Basic或OAuth驗證。按數據卷傳送數據,如遇發送失敗按預先設置重試。可根據配置在請求間按固定時間等待,知足下游系統的調用限制。根據返回狀態處理並可經過再運行繼續發送任務。
框架選取
因項目技術棧熟悉程度,採用.NET Core建立工具,.NET Core可實現工具跨平臺。