下載
從專案網站的下載頁面取得 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 可以單獨執行,也可以在幾個現有的叢集管理員上執行。它目前提供多種部署選項
- 獨立部署模式:在私有叢集上部署 Spark 的最簡單方式
- Apache Mesos(已棄用)
- Hadoop YARN
- Kubernetes
後續步驟
程式設計指南
- 快速入門:Spark API 的快速介紹;從這裡開始!
- RDD 程式設計指南:Spark 基礎知識的概觀 - RDD(核心但舊的 API)、累加器和廣播變數
- Spark SQL、資料集和資料框:使用關聯式查詢處理結構化資料(比 RDD 較新的 API)
- 結構化串流:使用關聯式查詢處理結構化資料串流(使用資料集和資料框,比 DStreams 較新的 API)
- Spark 串流:使用 DStreams 處理資料串流(舊 API)
- MLlib:套用機器學習演算法
- GraphX:處理圖形
- SparkR:使用 Spark 在 R 中處理資料
- PySpark:使用 Spark 在 Python 中處理資料
- Spark SQL CLI:在命令列上使用 SQL 處理資料
API 文件
- Spark Scala API(Scaladoc)
- Spark Java API(Javadoc)
- Spark Python API(Sphinx)
- Spark R API(Roxygen2)
- Spark SQL、內建函式(MkDocs)
部署指南
- 叢集概觀:在叢集上執行時,概念和組成的概觀
- 提交應用程式:封裝和部署應用程式
- 部署模式
- Amazon EC2:讓您可以在約 5 分鐘內在 EC2 上啟動叢集的腳本
- 獨立部署模式:在沒有第三方叢集管理員的情況下快速啟動獨立叢集
- Mesos:使用 Apache Mesos 部署私人叢集
- YARN:在 Hadoop NextGen (YARN) 上部署 Spark
- Kubernetes:在 Kubernetes 上部署 Spark
其他文件
- 組態:透過其組態系統自訂 Spark
- 監控:追蹤應用程式的行為
- 調整指南:最佳化效能和記憶體使用的最佳實務
- 工作排程:在 Spark 應用程式內部和外部排程資源
- 安全性:Spark 安全性支援
- 硬體配置:叢集硬體建議
- 與其他儲存系統整合
- 遷移指南: Spark 組件的遷移指南
- 建置 Spark: 使用 Maven 系統建置 Spark
- 為 Spark 貢獻心力
- 第三方專案: 相關的第三方 Spark 專案
外部資源