Apache Spark - 適用於大規模資料分析的統一引擎

Apache Spark 是一個適用於大規模資料處理的統一分析引擎。它提供 Java、Scala、Python 和 R 中的高階 API,以及支援一般執行圖表的最佳化引擎。它還支援豐富的高階工具,包括 Spark SQL(適用於 SQL 和結構化資料處理)、Spark 上的 pandas API(適用於 pandas 工作負載)、MLlib(適用於機器學習)、GraphX(適用於圖形處理)和 結構化串流(適用於增量運算和串流處理)。

下載

從專案網站的下載頁面取得 Spark。本文件適用於 Spark 版本 3.5.1。Spark 使用 Hadoop 的用戶端程式庫來處理 HDFS 和 YARN。下載已預先套裝為少數幾個熱門的 Hadoop 版本。使用者也可以下載「Hadoop free」二進位檔,並透過擴充 Spark 的類別路徑來使用任何 Hadoop 版本執行 Spark。Scala 和 Java 使用者可以使用 Maven 座標在專案中包含 Spark,而 Python 使用者可以從 PyPI 安裝 Spark。

如果您想從原始碼建置 Spark,請參閱建置 Spark

Spark 可在 Windows 和類 UNIX 系統(例如 Linux、Mac OS)上執行,而且應該可以在執行受支援 Java 版本的任何平台上執行。這應該包括 x86_64 和 ARM64 上的 JVM。在單一機器上執行本地端非常容易,您只需要在系統的PATH中安裝java,或將JAVA_HOME環境變數指向 Java 安裝即可。

Spark 可在 Java 8/11/17、Scala 2.12/2.13、Python 3.8+ 和 R 3.5+ 上執行。自 Spark 3.5.0 起,不再支援 Java 8 8u371 之前的版本。在使用 Scala API 時,應用程式必須使用與 Spark 編譯時相同的 Scala 版本。例如,在使用 Scala 2.13 時,請使用為 2.13 編譯的 Spark,並為 Scala 2.13 編譯程式碼/應用程式。

對於 Java 11,Apache Arrow 程式庫需要設定-Dio.netty.tryReflectionSetAccessible=true。當 Apache Arrow 內部使用 Netty 時,這可以防止出現java.lang.UnsupportedOperationException: sun.misc.Unsafe or java.nio.DirectByteBuffer.(long, int) not available錯誤。

執行範例和 Shell

Spark 附帶多個範例程式。Python、Scala、Java 和 R 範例位於examples/src/main目錄中。

若要在 Python 解譯器中互動式執行 Spark,請使用bin/pyspark

./bin/pyspark --master "local[2]"

範例應用程式以 Python 提供。例如

./bin/spark-submit examples/src/main/python/pi.py 10

若要執行 Scala 或 Java 範例程式之一,請在頂層 Spark 目錄中使用 bin/run-example <class> [params]。(在幕後,這會呼叫較通用的 spark-submit 腳本 來啟動應用程式)。例如,

./bin/run-example SparkPi 10

您也可以透過修改版本的 Scala shell 來互動式執行 Spark。這是學習架構的絕佳方式。

./bin/spark-shell --master "local[2]"

--master 選項會指定 分散式叢集的 master URL,或 local 以使用一個執行緒在本地執行,或 local[N] 以使用 N 個執行緒在本地執行。您應該從使用 local 來進行測試開始。若要取得完整的選項清單,請使用 --help 選項執行 Spark shell。

自 1.4 版起,Spark 提供了 R API(僅包含 DataFrame API)。若要使用 R 解譯器互動式執行 Spark,請使用 bin/sparkR

./bin/sparkR --master "local[2]"

R 中也提供了範例應用程式。例如

./bin/spark-submit examples/src/main/r/dataframe.R

使用 Spark Connect 在任何地方執行 Spark Client 應用程式

Spark Connect 是 Spark 3.4 中引入的新用戶端伺服器架構,它將 Spark 用戶端應用程式解耦,並允許遠端連線到 Spark 叢集。用戶端與伺服器之間的分離允許 Spark 及其開放生態系統從任何地方利用,並嵌入在任何應用程式中。在 Spark 3.4 中,Spark Connect 為 PySpark 提供 DataFrame API 涵蓋範圍,並在 Scala 中支援 DataFrame/Dataset API。

若要進一步瞭解 Spark Connect 及其使用方法,請參閱 Spark Connect 概觀

在叢集上啟動

Spark 叢集模式概觀 說明了在叢集上執行的主要概念。Spark 可以單獨執行,也可以在幾個現有的叢集管理員上執行。它目前提供多種部署選項

後續步驟

程式設計指南

API 文件

部署指南

其他文件

外部資源