
「我經常告訴客戶,Apache Beam 就像資料處理的「Docker」。它具有高度可攜性,可在任何地方無縫運行,統一了批次和串流處理,並提供了許多開箱即用的範本。採用 Beam 可以加速從批次處理到串流處理的遷移,輕鬆地在不同環境中重複使用管道,並更快地啟用新的使用案例。Apache Beam 的優點和卓越效能對許多人來說都是遊戲規則的改變者!」
為 OCTO Technology 客戶提供高效能且具效率的交易資料處理
背景
OCTO Technology 是 Accenture 的一部分,處於技術諮詢和軟體工程的前沿,專門研究新技術和數位轉型。自 1998 年以來,OCTO 一直致力於為客戶打造可擴展的數位解決方案,推動業務轉型,客戶範圍從新創公司到跨國企業。OCTO 利用其深厚的技術專業知識和成功的創新文化,幫助客戶探索、測試和採用新興技術,或大規模實施成熟的數位解決方案。
憑藉強大的 Apache Beam 統一可攜式模型,OCTO 已釋放潛力,可為多個客戶(包括著名的法國報紙和法國最大的雜貨零售商之一)的資料生態系統賦能、轉型和擴展。
在本焦點報導中,OCTO 的資料架構師 Godefroy Clair 和資料工程師 Florian Bastin 和 Leo Babonnaud,揭示了 Apache Beam 對法國一家領先雜貨零售商的資料處理所產生的顯著影響。此實作加速了從批次處理到串流處理的遷移,使交易資料處理速度提高了 4 倍,基礎架構成本效益提高了 5 倍。
高效能的交易資料處理
OCTO 的客戶是一家在多個國家擁有數萬家門市的知名雜貨和便利商店零售商,他們依賴內部網路應用程式來幫助店經理做出明智的採購決策和有效的門市管理。該網路應用程式可存取來自各種內部資料儲存、平台和系統的重要產品詳細資訊、庫存量、價格、促銷活動等。
在 2022 年之前,客戶使用協調引擎來協調批次管道,這些管道會整合和處理來自雲端儲存檔案和 Pub/Sub 訊息的資料,並將輸出寫入 BigQuery。然而,由於大多數來源資料在夜間上傳,批次處理在滿足 SLA 並在門市營業前向店經理提供最新資訊方面構成了挑戰。此外,不正確或遺失的資料上傳需要繁瑣的資料庫狀態回復,其中涉及大量的交易資料和日誌。客戶的內部團隊投入大量時間來維護大量的 SQL 查詢或手動更新資料庫狀態,導致高維護成本。
為了解決這些問題,客戶尋求 OCTO 的專業知識來轉型其資料生態系統,並將其核心使用案例從批次處理遷移到串流處理。目標包括更快的資料處理、確保網路應用程式中的最新資料、簡化管道和資料庫維護、確保可擴展性和彈性,以及有效處理資料量的峰值。
客戶需要非常快速地整合和處理來自雲端儲存和 Pub/Sub 事件的大量不同格式的檔案,以便每天在其網路應用程式中獲得有關新產品、促銷活動等的最新資訊。因此,Apache Beam 是完美的工具。
Apache Beam 及其統一模型成為完美的解決方案,為客戶的核心交易資料處理啟用近乎即時的串流處理,以及獨立使用案例的批次處理。此外,它還提供了使用 Dataflow 執行器 自動擴展的額外優勢。透過 Apache Beam 的 Python SDK 和開箱即用的 I/O 連接器,OCTO 能夠在現有的和新的批次和串流管道之間重複使用 Python 元件,並利用與 Pub/Sub 和雲端儲存的原生最佳化連線,加速遷移。
客戶的網路應用程式背後的串流 Apache Beam 管道現在會處理來自 Pub/Sub 訊息和雲端儲存檔案的產品和庫存資料,這些檔案的大小從幾行到 170 萬行不等,它們會在不同時間、以不可預測的順序以及各種格式(例如 CSV、JSON 和 zip 檔案)到達雲端儲存。Apache Beam 的 及時處理功能使串流管道能夠有效處理該資料。它的 計時器提供了一種控制聚合的方式,方法是等待所有必要的事件和檔案都傳入,然後以正確的順序處理它們,而 GroupByKey 和 GroupIntoBatches 轉換則允許針對每個索引鍵進行有效的分組,並將輸入分批處理為所需的大小。每天,Apache Beam 管道會整合、重複資料刪除、擴充資料並將資料輸出到 Firestore 和 Algolia,處理超過 1 億行資料並在不到 3 小時內整合數百 GB 的交易資料和超過 TB 的外部狀態。
網路應用程式需要在門市營業前的清晨獲得最新資料。以前,及時處理客戶的所有資料是不可行的。多虧了 Apache Beam,他們現在可以在短短 3 小時內處理資料,即使輸入檔案在深夜才到達,也能確保資料可用性。
客戶的特定使用案例帶來了獨特的挑戰:擴充資料太大,無法保存在記憶體中,而且不可預測的檔案順序和到達時間使得計時器和狀態 API 不可行。由於無法利用 Apache Beam 的原生有狀態處理,OCTO 找到了將 DoFn 的狀態外部化到交易 Cloud SQL Postgres 資料庫的解決方案。在處理新的事件和檔案時,Apache Beam 管道會使用串流查詢來在 Cloud SQL 資料庫中選取、插入、更新和刪除具有狀態的資料列。在處理檔案、Pub/Sub 事件和日誌時,Apache Beam 在複雜的狀態整合方面表現出色,這些檔案、事件和日誌代表接收器資料庫中記錄的過去、現在和未來狀態。如果傳入的資料不正確並且需要還原接收器資料儲存區,Apache Beam 會處理大量關於特定時間範圍內發生的資料移動的日誌,並將它們整合到狀態中,從而消除了手動工作。
網路應用程式需要在門市營業前的清晨獲得最新資料。以前,及時處理客戶的所有資料是不可行的。多虧了 Apache Beam,他們現在可以在短短 3 小時內處理資料,即使輸入檔案在深夜才到達,也能確保資料可用性。
透過利用 Apache Beam,客戶在資料處理方面取得了突破性的轉型,為其內部網路應用程式提供了最新和歷史資料,提高了整體營運效率,並透過改善的處理延遲滿足了業務需求。
自訂 I/O 和對 SQL 連線的精細控制
客戶的特定使用案例需要在 Cloud SQL 資料庫中根據 PCollection 中的值執行 CRUD 作業,儘管內建的 JBDC I/O 連接器支援從 Cloud SQL 資料庫讀取和寫入,但它不適用於此類 SQL 作業。然而,Apache Beam 的自訂 I/O 框架開啟了 建立針對複雜使用案例量身打造的新連接器的大門,提供了與開箱即用 I/O 相同的連線能力。利用此優勢並利用 ParDo 和 GroupByKey 轉換,OCTO 成功開發了一個新的 Apache Beam I/O。此自訂 I/O 使用 Cloud SQL Python 連接器與 Cloud SQL 資料庫無縫互動,在 DoFn.Setup 方法中將後者實例化為連線物件。
此外,Apache Beam 為 OCTO 提供了對平行處理的精細控制,使其能夠最大化工作進程的效率。借助 Dataflow 執行器強大的平行處理和自動擴展功能,OCTO 必須解決 Cloud SQL 強加的 並行連線數量的限制。為了克服這個挑戰,Apache Beam DoFn.Setup 方法發揮了作用,它提供了一種在方法中指定最大並行操作數的方法。OCTO 還利用 beam.utils.Shared 模組為 Cloud SQL 資料庫建立連線集區,有效地在工作層級的所有進程中共用它。
OCTO 的數據工程師在 2023 年 Beam 高峰會 上展示了這些由 Apache Beam 驅動的創新發展。
結果
Apache Beam 使 OCTO 能夠徹底改變一家法國知名連鎖雜貨零售商的數據處理方式,在基礎設施成本上實現了 5 倍的優化,並將數據處理效能提高了 4 倍。Apache Beam 的統一模型和 Python SDK 在加速從批次處理遷移到串流處理的過程中發揮了關鍵作用,它能夠在不同管線中重複使用組件、套件和模組。
Apache Beam 強大的轉換功能和穩健的串流能力,使客戶的串流管線能夠每天有效地處理超過 1 億筆資料列,並在 3 小時內將交易資料與超過 1TB 的外部狀態整合,這在以前是無法實現的。Apache Beam 的彈性和可擴展性使 OCTO 能夠解決特定用例的技術限制,實現了效能和控制之間的完美平衡,以符合客戶特定的業務目標。
我經常告訴客戶,Apache Beam 是數據處理領域的「Docker」。它具有高度的可移植性,可以無縫地在任何地方執行,統一了批次處理和串流處理,並提供了許多開箱即用的範本。採用 Beam 可以加速從批次處理遷移到串流處理,輕鬆在不同情境中重複使用管線,並更快地啟用新的用例。Apache Beam 的優點和卓越效能對於許多人來說都是一項重大變革!
了解更多
這項資訊對您有幫助嗎?