什麼是 Apache Spark?

Apache Spark 是用於大規模資料處理的整合數據分析引擎,內建 SQL、串流、機器學習和圖形處理等多種模組。Spark 可以在 Apache Hadoop、Kubernetes 和雲端上執行,也可獨立運作,處理各種資料來源。這項服務提供豐富的 Java、Scala、Python 和 R API,可供廣大開發人員和數據資料學家使用。另外,它的 Python API (PySpark) 也能與 Pandas 等常見程式庫完美整合,方便您處理資料。Google Cloud 提供無伺服器選項、Lightning Engine 等突破性效能強化功能,並與統一的資料和 AI 平台深度整合,讓 Apache Spark 達到全新境界。

常會有人問 Apache Spark 和 Apache Hadoop 的個別使用時機,其實兩者都是當今市場上最出眾的分散式系統,兩者的 Apache 頂層專案也相似,並且經常一起使用。Hadoop 主要用於具有 MapReduce 模式的大量磁碟作業,而 Spark 則是一種更靈活但成本通常較高的記憶體內處理架構。瞭解每種工具的特性,將有助於判斷最佳實作時機。

瞭解 Google Cloud 如何協助您以更簡單、整合且更具成本效益的方式,執行 Apache Spark 工作負載。您可以使用 Google Cloud Serverless for Apache Spark 進行開發,免去作業負擔,或是使用 Dataproc 建立代管 Spark 叢集。

Apache Spark 總覽

Spark 生態系統包括五個主要元件:

  • Spark Core 是通用的分散式資料處理引擎,這是基礎執行引擎,可管理分散式任務分派、排程和基本 I/O。Spark Core 引進了彈性分散式資料集 (RDD) 的概念,這是可在容錯模式下平行處理的不可變分散式物件集合。建構於其上的程式庫適用於 SQL、串流處理、機器學習和圖形運算,且可以在應用程式中一起使用。


  • Spark SQL 是處理結構化資料的 Spark 模組,並導入 DataFrames,為結構化資料操作提供比 RDD 更優異且更方便開發人員使用的 API。這個模組讓您可以使用 SQL 或熟悉的 DataFrame API 在 Spark 程式中查詢結構化資料。Spark SQL 支援 HiveQL 語法,並允許存取現有的 Apache Hive 倉儲。Google Cloud 透過 Lightning Engine 等創新技術,進一步提升 Spark 工作效能,尤其是 SQL 和 DataFrame 作業,在 Google Cloud 上執行 Spark 時,查詢和資料處理作業的速度會大幅提升。


  • Spark Streaming 讓您可以輕鬆建構可擴充的容錯串流解決方案。這項元件將 Spark 語言整合 API 融入串流處理,讓您也可以使用與批次工作相同的方式,編寫串流工作,無論是使用 DStreams,還是以 DataFrames 為基礎的較新版 Structured Streaming API 皆適用。Spark Streaming 支援 Java、Scala 和 Python,且具備立即可用的有狀態「一次性」語意。


  • MLlib 是 Spark 可擴充的機器學習程式庫,並且提供工具讓實用的機器學習可以輕鬆擴充且容易使用。MLlib 包含許多常見的學習演算法,例如分類、迴歸、推薦和分群。它還包含工作流程和其他公用程式,例如特徵轉換、機器學習 pipeline 建構、模型評估、分散式線性代數和統計資料等。搭配 Google Cloud 的 Vertex AI 使用時,Spark MLlib 工作流程可順暢整合至 MLOps pipeline,並透過 Gemini 進行程式設計和疑難排解,進而提升開發效率。


  • GraphX 是用於圖形和圖形平行運算的 Spark API,將「擷取、轉換和載入」、「探索性分析」和「疊代圖運算」整合到同個系統,使用上相當靈活,可與圖形和集合完美搭配。

Google Cloud 為這些元件提供最佳化環境。舉例來說,Lightning Engine 可提升 Spark 和 DataFrame 的效能,Google Cloud Serverless for Apache Spark 則能簡化部署和管理作業,而 Gemini 可在 BigQuery StudioVertex AI Workbench 等筆記本環境中,提升開發人員的工作效率。

Apache Spark 的運作方式

Apache Spark 的強大之處在於幾個核心架構原則:

  • 記憶體內處理:Spark 會將資料載入記憶體,與磁碟式系統相比,可大幅加快疊代演算法和互動式查詢的速度。
  • 分散式執行:在機器叢集中執行。驅動程式會協調執行程序 (worker程序),讓這些執行程序在不同的資料分區中平行執行工作。
  • RDD 和 DataFrame:彈性分散式資料集 (RDD) 是基本容錯資料抽象化概念。DataFrames 建構在 RDD 上,可為結構化資料提供更豐富的結構定義感知 API,並透過 Catalyst 最佳化器進行最佳化。
  • 延遲評估和 DAG:Spark 會建立作業的有向無環圖 (DAG)。轉換作業是「延遲」的 (不會立即計算),因此 Spark 可以在「動作」觸發執行作業之前,先最佳化整個工作流程。

Apache Spark 的好處有哪些?

快速

相較於 Hadoop MapReduce,Spark 的記憶體內處理和 DAG 排程器可讓工作負載執行速度更快,尤其是疊代任務。Google Cloud 透過最佳化基礎架構和 Lightning Engine 提升速度。

易用性

Spark 的高階運算子可簡化平行處理應用程式的建構作業。您可以透過 Scala、Python、R 和 SQL 以互動方式使用 Spark,加速開發作業。Google Cloud 提供無伺服器選項,以及整合筆記本與 Gemini。



擴充性

Spark 可水平擴充,可將工作分散至叢集節點,以處理大量資料。Google Cloud 提供無伺服器自動調度資源功能和彈性的 Dataproc 叢集,可簡化擴充作業。

通用性

Spark 提供多個程式庫,包括 SQL 和 DataFrames、機器學習適用的 MLlib、GraphX 和 Spark Streaming。您可在同一應用程式中無縫組合這些程式庫。

在開放原始碼架構下,帶動技術創新

Spark 運用開放原始碼社群的力量,快速創新並解決問題。Google Cloud 秉持開放精神,提供標準 Apache Spark,同時強化其功能。

為什麼要選擇 Spark 而非僅限 SQL 的引擎?

Apache Spark 是一個快速的通用型叢集運算引擎,可部署在 Hadoop 叢集中或獨立模式下。透過 Spark,程式設計師可以使用 Java、Scala、Python、R 和 SQL 快速編寫應用程式,然後讓開發人員、數據資料學家和具有統計經驗的進階商務使用者都可以存取。使用 Spark SQL 時,使用者可以連接任何資料來源,並將其顯示為資料表供 SQL 用戶端使用。此外,在 Spark 中也可以輕鬆實作互動式機器學習演算法。

使用 Apache Impala、Apache Hive 或 Apache Drill 之類僅限 SQL 的引擎時,使用者只能使用 SQL 或類似 SQL 的語言查詢儲存在多個資料庫中的資料。所以架構比 Spark 要小一些。 不過,在 Google Cloud 中,您不必做出嚴格的選擇。BigQuery 提供強大的 SQL 功能,Google Cloud Serverless for Apache Spark 和 Dataproc 則提供 Spark 和 Hadoop 代管服務,讓您能透過 BigLake Metastore 和開放式格式,在同一份資料上使用 Spark 的多樣化功能。

公司如何運用 Spark?

很多公司都會使用 Spark 將需要密集運算的艱鉅任務化繁為簡,更有效率地處理及分析大量的結構化和非結構化即時/封存資料。此外,Spark 也讓使用者能完美整合相關的複雜功能,例如機器學習和圖形演算法。 常見的應用包括:

  • 大規模 ETL/ELT
  • 即時資料處理
  • 機器學習
  • 互動式資料探索
  • 圖表數據分析

資料工程師

資料工程師可使用 Spark 編寫程式並建立資料處理工作,且有更多的程式語言選擇。在 Google Cloud 中,資料工程師可以使用 Google Cloud Serverless for Apache Spark 來執行 ETL/ELT pipeline,免去作業負擔,或是使用 Dataproc 來控管代管叢集,所有服務都整合了 BigQuery 和 Dataplex Universal Catalog 等治理工具。

數據資料學家

數據資料學家可以使用 Spark 搭配 GPU,在數據分析和機器學習方面獲得更豐富的成果。能使用熟悉的語言更快處理大量資料,將有助於加速創新。 Google Cloud 為 Spark 提供強大的 GPU 支援,並與 Vertex AI 完美整合,讓數據資料學家能更快建構及部署模型。他們可以使用 BigQuery Studio、Vertex AI Workbench 等各種筆記本環境,或是連結 Jupyter 和 VS Code 等偏好的 IDE。這種彈性的開發體驗,再加上 Gemini 的支援,讓他們從最初的探索階段到實際部署,都能加快工作流程。

在 Google Cloud 使用 Spark 的更佳做法

Google Cloud 可解決大規模執行 Spark 時常見的難題,讓您專心取得洞察資訊,不必煩惱基礎架構。

易用性

DataprocServerless for Apache Spark 均為全代管服務,可自動佈建及調度資源,讓您不必再為營運和調整作業煩惱。

智慧功能

Spark 開發人員可運用 Gemini 的強大功能,在整合式資料平台中完成整個生命週期,包括開發、部署、監控和疑難排解,而且這個平台已準備好支援資料湖倉。

速度升級

Lightning Engine 是 Google Cloud 的新一代引擎,可加速處理 Spark 工作,無須手動調整,讓您享有業界頂尖的 Spark 效能,同時節省成本。

展開下一步行動

運用價值 $300 美元的免費抵免額和超過 20 項一律免費的產品,開始在 Google Cloud 中建構產品與服務。