什麼是 Apache Spark?

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

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

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

Apache Spark 總覽

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

  1. Spark Core 是通用的分散式資料處理引擎,這是基礎執行引擎,可管理分散式任務分派、排程和基本 I/O。Spark Core 引進了彈性分散式資料集 (RDD) 的概念,這是可在容錯模式下平行處理的不可變分散式物件集合。建構於其上的程式庫適用於 SQL、串流處理、機器學習和圖形運算,且可以在應用程式中一起使用。
  2. 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 時,查詢和資料處理工作將大幅加速。
  3. Spark Streaming 讓您可以輕鬆建構可擴充的容錯串流解決方案。這項元件將 Spark 語言整合 API 融入串流處理,讓您也可以使用與批次工作相同的方式,編寫串流工作,無論是使用 DStreams,還是以 DataFrames 為基礎的較新版 Structured Streaming API 皆適用。Spark Streaming 支援 Java、Scala 和 Python,且具備立即可用的有狀態「一次性」語意。
  4. MLlib 是 Spark 可擴充的機器學習程式庫,並且提供工具讓實用的機器學習可以輕鬆擴充且容易使用。MLlib 包含許多常見的學習演算法,例如分類、迴歸、推薦和分群。它還包含工作流程和其他公用程式,例如特徵轉換、機器學習 pipeline 建構、模型評估、分散式線性代數和統計資料等。搭配 Google Cloud 的 Vertex AI 使用時,Spark MLlib 工作流程可順暢整合至 MLOps pipeline,並透過 Gemini 進行程式設計和疑難排解,進而提升開發效率。
  5. 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 和 DataFrame、機器學習適用的 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 中執行 Apache Spark

運用 Google Cloud 提升 Spark 使用體驗

  • Google Cloud Serverless for Apache Spark您可以不必管理任何叢集,直接執行 Spark 工作,真正免去作業負擔。您可以享有 Lightning EngineGemini 幾乎即時啟動、自動調整資源配置,以及效能提升等優勢。非常適合用於 ETL、資料科學和互動式數據分析,尤其是與 BigQuery 整合時。
  • Dataproc如果您需要更細微地控管叢集環境,或需要特定的 Hadoop 生態系統元件搭配 Spark,可以使用 Dataproc 的全代管服務。Dataproc 可簡化叢集建立和管理作業,並能運用 Lightning Engine 強化 Spark 效能。
  • 統合且開放的系統:在 Google Cloud 中執行 Spark 可與 BigQuery (用於整合式分析)、Vertex AI (用於 MLOps)、BigLake Metastore (用於開放式中繼資料共用) 和 Dataplex Universal Catalog (用於全面的資料管理) 等服務完美整合,這些服務皆支援開放式 lakehouse 架構。

展開下一步行動

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