下载
从项目网站的 下载页面 获取 Spark。本文档适用于 Spark 版本 3.5.1。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 8/11/17、Scala 2.12/2.13、Python 3.8+ 和 R 3.5+ 上。从 Spark 3.5.0 开始,版本 8u371 之前的 Java 8 支持已弃用。使用 Scala API 时,应用程序必须使用与编译 Spark 所用的 Scala 版本相同的版本。例如,使用 Scala 2.13 时,请使用为 2.13 编译的 Spark,并将代码/应用程序也编译为 Scala 2.13。
对于 Java 11,需要设置 -Dio.netty.tryReflectionSetAccessible=true
才能使用 Apache Arrow 库。这可以防止在 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
选项指定 分布式集群的主 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 可以独立运行,也可以在多个现有集群管理器上运行。它目前提供了多种部署选项
- 独立部署模式:在私有集群上部署 Spark 的最简单方法
- Apache Mesos(已弃用)
- Hadoop YARN
- Kubernetes
下一步去哪里
编程指南
- 快速入门:对 Spark API 的快速介绍;从这里开始!
- RDD 编程指南:Spark 基础知识概述 - RDD(核心但旧的 API)、累加器和广播变量
- Spark SQL、Dataset 和 DataFrame:使用关系查询处理结构化数据(比 RDD 更新的 API)
- 结构化流:使用关系查询处理结构化数据流(使用 Dataset 和 DataFrame,比 DStream 更新的 API)
- Spark Streaming:使用 DStream 处理数据流(旧 API)
- MLlib:应用机器学习算法
- GraphX:处理图
- SparkR:在 R 中使用 Spark 处理数据
- PySpark:在 Python 中使用 Spark 处理数据
- 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 项目
外部资源