跳至

什麼是 Apache Spark?

Apache Spark 是用於大規模資料處理的整合數據分析引擎,內建 SQL、串流、機器學習和圖形處理等多種模組。Spark 可以在 Apache Hadoop、Apache Mesos、Kubernetes 和雲端上執行,也可獨立運作,處理各種資料來源。

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

您還可以參考這篇文章,瞭解如何透過 Dataproc 在 Google Cloud 上執行 Apache Spark 叢集,以更簡單且更具成本效益的整合方式處理資料。

Apache Spark 總覽

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

1. Spark Core 是通用的分散式資料處理引擎,建構於其上的程式庫適用於 SQL、串流處理、機器學習和圖形運算,且可以在應用程式中一起使用。Spark Core 是整個專案的基礎,提供分散式工作分派、排程和基本 I/O 功能。

2. Spark SQL 是處理結構化資料的 Spark 模組,方便您使用同種方式存取各種資料來源。這個模組讓您可以使用 SQL 或熟悉的 DataFrame API 在 Spark 程式中查詢結構化資料。Spark SQL 支援 HiveQL 語法,並允許存取現有的 Apache Hive 倉儲。伺服器模式提供標準連線功能,使用者可以連接 Java 資料庫或開放資料庫。

3. Spark Streaming 讓您可以輕鬆建構可擴充的容錯串流解決方案。這項元件將 Spark 語言整合 API 融入串流處理,讓您也可以使用與批次工作相同的方式編寫串流工作。Spark Streaming 支援 Java、Scala 和 Python,且具備立即可用的有狀態「一次性」語意。

4. MLlib 是 Spark 可擴充的機器學習程式庫,並且提供工具讓實用的機器學習可以輕鬆擴充且容易使用。MLlib 包含許多常見的學習演算法,例如分類、迴歸、推薦和分群。它還包含工作流程和其他公用程式,例如特徵轉換、機器學習管道建構、模型評估、分散式線性代數和統計資料等。

5. GraphX 是用於圖形和圖形平行運算的 Spark API,將「擷取、轉換和載入」、「探索性分析」和「疊代圖運算」整合到同個系統,使用上相當靈活,可與圖形和集合完美搭配。除了高度靈活的 API 外,GraphX 也提供多種圖形演算法。它的效能不僅與最快的圖形系統不相上下,同時保有 Spark 的靈活性、容錯性和的易用性。

Apache Spark 的好處有哪些?

速度

執行工作負載的速度比 Hadoop MapReduce 快 100 倍。Spark 使用最先進的有向無環圖排程器、查詢最佳化器和實體執行引擎,實現高效能的批次和串流資料處理。

易用性

Spark 提供 80 多個高階運算子,可讓您輕鬆構建平行應用程式。您可以在 Scala、Python、R 和 SQL 殼層中以互動方式使用 Spark 快速編寫應用程式。

通用性

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

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

全球的社群都是 Spark 的堅強後盾,這些社群齊心協力,共同激盪出新概念和功能,速度比負責開發專屬解決方案的內部團隊更快、更有效。透過開放原始碼社群的集體力量,讓更多的創意萌芽、加快開發速度,還能在遇到問題時馬上解決,從而縮短了產品上市時間。

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

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

使用 Apache ImpalaApache HiveApache Drill 之類僅限 SQL 的引擎時,使用者只能使用 SQL 或類似 SQL 的語言查詢儲存在多個資料庫中的資料,所以架構比 Spark 要小一些。

公司如何運用 Spark?

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

資料工程師

數據資料工程師可使用 Spark 編寫程式並建立資料處理工作,且有更多的程式語言選擇。

數據資料學家

數據資料學家可以使用 Spark 搭配 GPU,在數據分析和機器學習方面獲得更豐富的成果。能使用熟悉的語言更快處理大量資料,將有助於加速創新。

Dataproc 是運作快速又簡單易用的全代管雲端服務,可讓您以更輕鬆且更具成本效益的整合方式,執行 Apache Spark 和 Apache Hadoop 叢集。這項服務能與其他 Google Cloud 服務完全整合,可以滿足至關重要的安全性、管理和支援需求,並讓您透過功能強大且完善的平台進行資料處理、數據分析和機器學習工作。

Google Cloud 提供各種大數據分析工具,例如 BigQueryNotebooksDataflow 等,可協助您建構情境豐富的應用程式、打造新的數據分析解決方案,進而取得實際可行的深入分析資料。