下载
从项目网站的下载页面获取 Spark。本文档适用于 Spark 4.0.0 版本。Spark 使用 Hadoop 的客户端库进行 HDFS 和 YARN 操作。下载包预先打包了几个流行的 Hadoop 版本。用户还可以下载“不带 Hadoop”的二进制文件,并通过扩充 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 17/21、Scala 2.13、Python 3.9+ 和 R 3.5+(已弃用)上运行。当使用 Scala API 时,应用程序需要使用与 Spark 编译时相同的 Scala 版本。自 Spark 4.0.0 起,它是 Scala 2.13。
运行示例和 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
要在顶层 Spark 目录中运行 Scala 或 Java 示例程序之一,请使用 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 客户端应用程序
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 既可以独立运行,也可以在现有多个集群管理器上运行。它目前提供以下几种部署选项:
- Standalone 部署模式:在私有集群上部署 Spark 的最简单方法
- Hadoop YARN
- Kubernetes
下一步
编程指南
- 快速入门:Spark API 的快速介绍;从这里开始!
- RDD 编程指南:Spark 基础概述 - RDD(核心但旧的 API)、累加器和广播变量
- Spark SQL、Datasets 和 DataFrames:使用关系查询处理结构化数据(比 RDD 更新的 API)
- 结构化流:使用关系查询处理结构化数据流(使用 Datasets 和 DataFrames,比 DStreams 更新的 API)
- Spark Streaming:使用 DStreams 处理数据流(旧的 API)
- MLlib:应用机器学习算法
- GraphX:处理图
- SparkR(已弃用):在 R 中使用 Spark 处理数据
- PySpark:在 Python 中使用 Spark 处理数据
- Spark SQL CLI:在命令行上使用 SQL 处理数据
API 文档
- Spark Python API (Sphinx)
- Spark Scala API (Scaladoc)
- Spark Java API (Javadoc)
- Spark R API (Roxygen2)
- Spark SQL、内置函数 (MkDocs)
部署指南
- 集群概述:在集群上运行时概念和组件的概述
- 提交应用程序:打包和部署应用程序
- 部署模式
- Standalone 部署模式:无需第三方集群管理器即可快速启动独立集群
- YARN:在 Hadoop NextGen (YARN) 之上部署 Spark
- Kubernetes:直接在 Kubernetes 之上部署 Spark 应用程序
- Amazon EC2:允许您在大约 5 分钟内在 EC2 上启动集群的脚本
- Spark Kubernetes Operator:
- SparkApp:通过操作器模式在 Kubernetes 之上部署 Spark 应用程序
- SparkCluster:通过操作器模式在 Kubernetes 之上部署 Spark 集群
其他文档
- 配置:通过其配置系统自定义 Spark
- 监控:跟踪应用程序的行为
- Web UI:查看有关应用程序的有用信息
- 调优指南:优化性能和内存使用的最佳实践
- 作业调度:在 Spark 应用程序之间和内部调度资源
- 安全性:Spark 安全支持
- 硬件配置:集群硬件建议
- 与其他存储系统的集成
- 迁移指南:Spark 组件的迁移指南
- 构建 Spark:使用 Maven 系统构建 Spark
- 贡献 Spark
- 第三方项目:相关的第三方 Spark 项目
外部资源