如何將資料工作自動化?一文讀懂 Data Pipeline,解決您的資料分析、ETL 或機器學習挑戰

根據 Google 的調查顯示,資料工作者有 45% 的工作時間用於資料前處理,包含轉換和清洗資料。隨著資料量的不斷增長,資料類型、格式和來源的增加以及流量的不確定性也提升了資料處理的複雜度,為資料工作者帶來了全新的挑戰。

有效地處理和管理資料對於企業的成功至關重要。Data Pipeline 可以幫助企業自動化資料處理過程,減少手動錯誤並提高資料品質和處理效率,從而釋放資料工作者,讓他們專注於商業洞察和挖掘市場機會,不必再被束縛於高重複性的工作中。瞭解不同的 Data Pipeline 設計模式和架構類型可以幫助您更好地應對不同的資料處理挑戰,提高您的工作效率和資料處理能力,重新聚焦於創造更好的服務。

本文旨在向您介紹 Data Pipeline 的架構設計概況,您將會學到:

  • Data Pipeline 是什麼?
  • Data Pipeline 有哪些優勢?
  • Data Pipeline 有哪些組成要素?
  • Data Pipeline 的類型
  • 在設計 Data Pipeline 的過程中,您需要...
  • 在 Google Cloud 上的 Data Pipeline 架構實例

Data Pipeline 是什麼?

圖一:Data Pipeline 資料處理步驟
icon/enlarge

簡單來說,Data Pipeline 涵蓋了企業內部資料流動的全過程,是一系列的資料處理步驟。從英文字面上看,“Pipeline” 翻譯成中文有兩層意思,一層作名詞譯為管道,二層作動詞譯為用管道運輸。就像是一條貫穿整個資料產品或資料系統的「管道」,資料是管道中承載的主要內容,Data Pipeline 連接了各種資料處理和分析的環節,比如過濾、遮蔽、整合和標準化,使整個龐大的系統變得有條不紊,易於管理和擴展。

當面對大量不同格式、來源、類型的資料時,設計和搭建一個高效的 Data Pipeline 是非常重要的。這可以幫助我們自動化地整合、轉換和管理資料,並且更容易地延展出附加功能,比如自動產生報表、自動進行用戶行為預測、做更複雜的分析等。

一個高效的 Data Pipeline 不僅可以讓工作事半功倍,更重要的是可以解決許多複雜問題。在現實世界中,Data Pipeline 已被廣泛應用於各個領域,例如機器學習、任務分析、網絡管理和產品研發等。像 Meta、Google、Netflix 等資料驅動型的科技巨頭,他們的產品開發過程中都有龐大的資料工作團隊負責設計、開發和維護整個產品的 Data Pipeline。

Data Pipeline 有哪些優勢?

Data Pipeline 讓您可以整合來自不同來源的資料,並將其轉換為可分析的格式。它們消除了資料孤島,使您的資料分析更加可靠和準確。以下是 Data Pipeline 的一些主要優點:

全面的資料整合

Data Pipeline 可以整合不同來源的資料集,從多個來源交叉檢查資料並糾正任何不一致之處。例如,假設一個客戶在您的電商網頁和應用程式中都進行了購物,但在應用程式中不小心拼錯了名字,透過 Data Pipeline,這種不一致性可以在資料被送往分析之前被糾正。

提升資料品質

Data Pipeline 可以幫助管理和控制資料品質,包括資料清洗、驗證和修正錯誤等。這有助於提高資料品質和準確性,並減少資料分析中的錯誤和偏差。此外,Data Pipeline 消除了冗餘資料並確保整個組織的資料品質保持一致。

高效的資料處理

在轉換和載入資料方面,資料工作者通常需要執行大量重複的任務。透過 Data Pipeline 將這些重複性工作自動化,讓資料工作者能夠更快地處理原始資料,集中精力於建立商業洞察。

可擴展性

Data Pipeline 的設計可以根據資料的增加或變化進行擴展,保證系統的可擴展性。這使得資料處理能夠適應不斷變化的業務需求和資料增長。

便於管理和監控資料流

Data Pipeline 可以提供監控和管理工具,幫助資料工作者即時跟蹤資料流和識別潛在問題。這有助於保持系統的穩定性和可靠性,並快速解決故障。

Data Pipeline 有哪些組成要素?

圖二:Data Pipeline 組成要素
icon/enlarge

資料來源

資料來源可以是應用程式、IoT 裝置,或不同類型的資料庫。不同的來源可以將資料主動推送至 Data Pipeline,而 Data Pipeline 也可以使用 API 呼叫、Webhook 或資料複寫程序從資料來源擷取資料。您可以即時擷取資料,也可以設計排程從來源收集資料。

資料格式有很多種,不同格式有各自適合的資料處理架構和工具。典型的 Data Pipeline 中通常會同時包含多種資料類型,可以分為以下幾類:

  • Batch data(批次資料):是指按照一定時間間隔或數量規定,將資料一次性收集起來形成資料集再進行處理的資料。Batch data 通常以文件的形式存在,例如 CSV、JSON、AVRO、PARQUET 等格式,收集方式分為傳統的批次處理 (batch processing) 或微批次處理 (micro-batch processing) 。由於現今的應用程式傾向產生連續的資料,因此微批次處理 (micro-batch processing) 是較推薦的資料收集方式。
  • Stream data(串流資料):指的是源源不斷從各種來源生成的即時資料,例如傳感器、網站、社交媒體平台或移動設備。這些資料即時傳輸和處理,且大小不大 (約幾 KB)。Stream data 可以是各種格式,包括文本、圖像、音訊和影片等,這些資料需要依照個別記錄或移動時段,按順序以遞增的方式處理,通常會使用串流處理服務(如 Apache Kafka、Google Pub/Sub、Azure Stream Analytics 或 Amazon Stream Data)進行處理,並用於相互關聯、彙總、篩選和取樣等多種分析。
  • Transaction data(交易資料): 是指記錄了交易資訊的資料,例如在資料庫中存儲的所有交易、訂單、購買記錄等資料。常見的 Transaction data 包括關聯式資料庫 (RDBMS)、NoSQL、大數據等。
  • Flat file(平面檔案):包含 PDF 或其他非表格格式的平面檔案。例如醫療或法律文件。

資料處理過程

隨著原始資料流經 Data Pipeline,資料會發生變更,例如排序、格式化、刪除重複資料、糾錯和驗證等,以變得更有商業價值。資料處理過程通常可以劃分成三類:

  • ETL (Extract 提取, Transform 轉換,Load 載入)

ETL 是指將資料從來源系統中提取出來,對其進行轉換(清理、格式化、重組等)後,再將其載入到目標系統中的過程。ETL 將資料從不同的源系統中整合並進行統一的轉換和加工,使資料能夠被更好地分析和利用。

  • ELT (Extract 提取,Load 載入,Transform 轉換)

隨著高性能的 Data Warehouse 如 BigQuery 的出現,其具有處理大型資料集的能力,由此衍生出了一種新的資料整合策略——ELT,直接將原始、未處理的資料發送到 Data Warehouse,依賴 Data Warehouse 在載入資料後對其進行轉換和加工。 然而,ELT 無法在載入之前刪除敏感資料,因此從資料安全、合規性和資料品質的角度來看,它並不是完美的。對於許多企業而言,他們會選擇 ETLT 的混合方法。

  • ETLT (Extract 提取,Transform 轉換,Load 載入,Transform 轉換)

ETLT 是 ETL 和 ELT 的混合體。在 ETLT 中,資料首先被提取並經過轉換處理,然後被載入到一個中間儲存位置,然後再進行進一步的轉換和載入到目標系統中。這種方法結合了 ETL 和 ELT 的優點,可以在資料準備和加工過程中提供更多的靈活性和控制,並且允許將大量資料移動到不同的系統和環境中。

目的地

Data Pipeline 的目的地可以是 Data Warehouse、Data Lake,或其他商業智慧或機器學習模型。繼續閱讀,您會瞭解到不同目的地的架構設計和區別。

Data Pipeline 的類型

Data Pipeline 主要有兩種類型,批次處理 (Batch Processing) 和串流處理 (Stream Processing) 。

批次處理 (Batch Processing)

批次處理的 Data Pipeline 是指將大量資料分批次進行處理,通常適用於一些定期或計劃性的任務,例如批量匯入和匯出資料、生成報告等。當所有資料轉換完成後,Data Pipeline 會將全部資料載入 Data Warehouse 或其他類似的資料存放區。

批次處理的 Data Pipeline 運行頻率較低、時間較短,通常在離峰時段運行,需要較高的電腦運算能力。但由於 Batch data 通常不需要立即處理,因此可以對其進行離線處理和優化,以提高效率和降低成本。下圖展示了批次處理並將資料載入 Data Warehouse 的架構設計邏輯:

圖三:批次處理並將資料載入 Data Warehouse 的架構設計邏輯
icon/enlarge

Data Warehouse 的主要目的是支持歷史資料報告和分析,因此可以通過批次處理的方式定期更新資料。Data Warehouse Pipeline 通常採用傳統的 ETL(Extract, Transform, Load)流程,通常會對資料進行嚴格的驗證和清理,以確保資料的品質和一致性,並根據預定義的資料模型和架構進行儲存和管理。

串流處理 (Stream Processing)

串流處理的 Data Pipeline 能夠即時地處理和分析串流資料,並應對資料的高變化率和高速率。它需要可靠、低延遲的網路連接,而對於電腦的運算能力則沒有較高要求。此外, Pipeline 本身必須具備高容錯性。即使有些封包丟失或按照不同的順序到達,您的 Data Pipeline 應該能夠正常處理資料。下圖展示了串流處理並將資料載入 Data Lake 的架構設計邏輯:

圖四:串流處理並將資料載入 Data Lake 的架構設計邏輯
icon/enlarge

Data Lake 的主要目的是支持即時資料分析和應用,因此需要能夠即時處理和分析串流資料。Data Lake Pipeline 通常采用 ELT(提取、載入、轉換)流程,先將資料快速載入到 Data Lake 中,再進行必要的轉換和加工處理,主要目的是支持即時資料分析和應用。

設計 data pipeline 的四大考慮事項

選擇符合需求的設計

Data Pipeline 的設計完全取決於您的最終需求。真的需要即時分析嗎?或者一個接近即時的系統就足夠了?您是在建立雲原生解決方案還是從本地系統遷移?回應這些問題可以幫助您瞭解自身需求。

一個 Data Pipeline 可以簡單到只有一個步驟,也可以複雜到包含多個資料轉換和處理步驟。現在有許多新技術不斷出現,提供更堅固、更快速的 Data Pipeline 方案。其中,Google BigLake 是 Google Cloud 推出的全新儲存引擎,提供了一種全新的資料載入方法用以統一 Data Warehouse 和 Data Lake,讓 BigQuery 和開源框架(例如 Spark)能夠以精細的訪問控制方式訪問資料。它能夠在不同雲廠商的存儲服務(例如 AWS S3、Azure Data Lake)和開放格式(例如 Apache Iceberg)中提供高速的查詢性能。這樣一來,使用者可以更快地處理和查詢資料,讓整個資料處理過程更流暢。

確認 Data Pipeline 的環節

當您在設計 Data Pipeline 時,您需要確認以下環節:

  • 確認來源資料的格式。
  • 選擇要使用的堆疊 (stack) 。
  • 選擇要使用的資料轉換工具。
  • 選擇資料處理過程:ETL、ELT 或 ETLT。
  • 決定如何管理轉換後的資料。
  • 決定如何監控和管理變動。

我們強烈建議您將 Data Pipeline 的設計保持簡單且模組化,以確保您清楚理解所設計的架構和資料轉換過程。簡單且模組化的設計能夠使開發和疑難排解的過程變得更輕鬆,對於系統的維運和升級皆有顯著的好處。

考量成本

在設計 Data Pipeline 架構時的另一個重要考量因素是成本。通常,相較於批次處理而言,串流處理的成本更高。熟悉每個環節的詳細計價並提前進行成本分析,對於選擇合適的架構設計非常重要。

確保彈性

在設計 Data Pipeline 時,確保架構設計的彈性非常重要。資料處理和存儲的過程需要能夠彈性應對不斷增長的資料量,且需要考量到資料流的速率和流量。如果架構設計缺乏彈性,當資料量增加、資料類型變化、新技術出現或資料流程發生變化時,可能需要重新設計和實現整個架構,這會浪費大量的時間和資源。有了彈性的架構設計,您可以更輕鬆地應對這些變化和需求,將新技術和新的資料來源整合到現有的架構中,並且可以更快速地進行故障排除和維護。

在 Google Cloud 上的 Data Pipeline 架構實例

本段落將向您展示在 Google Cloud 上針對 Batch ETL、資料分析、機器學習三種應用場景搭建 Data Pipeline 的架構範例。很重要的是,架構設計完全取決於您的需求。每個架構都會依據不同需求而有不一樣的設計。

批次處理的 ETL (Extract, Transform, Load) Pipeline

圖五:批次處理的 ETL (Extract, Transform, Load) Pipeline
icon/enlarge

批次處理的 Data Pipeline 其資料來源可能是銀行對帳單、研究報告、發票明細或採購單等,它們不需要被立即處理且數量龐大。在此應用場景下,最經典且簡單的架構由 Cloud Storage、Dataflow 和 BigQuery 組成 。Cloud Storage 作為針對物件的儲存服務,透過串聯 Dataflow 將資料載入 BigQuery 進行分析。這種方法的簡單性使得這種模式在簡單的轉換過程中可以重複使用並且很高效。然而,簡單的架構不一定適合所有應用場景,根據不同需求您會需要考慮更多細節。

資料分析的 Pipeline

圖六:資料分析的 Pipeline
icon/enlarge

資料分析的 Data Pipeline 是一個複雜的過程,可能同時包含批次處理或串流處理,需要多個服務相互串接來處理資料。設計的複雜性可能會增加項目的時間和成本,但為了實現業務目標,仔細審查和構建每個組件是必要的。

機器學習的 Data Pipeline

圖七:機器學習的 Data Pipeline
icon/enlarge

Google Cloud 上的機器學習架構是一個全面的設計,用戶可以在機器學習的全過程中利用 Google Cloud 服務來構建和處理資料。例如,Vertex AI 是 Google Cloud 上的一個全託管 AI 平台,提供您需要的所有機器學習工具,旨在簡化機器學習模型的開發、部署和管理。它提供了一個端到端的解決方案,服務覆蓋了從資料準備到模型訓練、部署和監控的整個機器學習生命週期。Vertex AI 還提供了自動化工具,可以幫助用戶優化模型的參數,從而提高模型的性能。Vertex AI 的特點是易於使用且高度可靠,可以支持多種機器學習框架和開發語言。

您的最佳雲端技術夥伴

雲端的資料處理服務能夠提供高彈性,並且在資料安全和隱私方面提供強大的支持。總體而言,資料上雲可以更好地支持企業的業務需求,提升企業管理的投入產出比,降低不確定性帶來的風險。您可以根據需求靈活地調整資源的使用,更輕鬆地構建高效、安全和可靠的資料處理架構,以應對不斷增長的資料量和變化的需求。CloudMile 可以在此過程中協助您進行完整的架構設計,根據您的成本和需求提供解決方案。聯絡我們,開啟您的資料轉型之旅。

撰文者:Paggie Chen/熱衷雲端技術和數字化轉型之旅

References: 

Solve your Data Analytics, ETL or Machine Learning challenges | Google Cloud Blog 

What is a data pipeline | IBM

科技巨头都爱的Data Pipeline,如何自动化你的数据工作? - 腾讯云开发者社区

What is Data Pipeline? 

訂閱 CloudMile 電子報

所有 CloudMile 最新消息、產品動態、活動資訊和特別優惠,立即掌握。