Apache Spark - 用于大规模数据分析的统一引擎

Apache Spark 是一个用于大规模数据处理的统一分析引擎。它提供 Java、Scala、Python 和 R 的高级 API,以及一个支持通用执行图的优化引擎。它还支持丰富的更高级工具,包括用于 SQL 和结构化数据处理的 Spark SQL、用于 pandas 工作负载的 Spark 上的 pandas API、用于机器学习的 MLlib、用于图处理的 GraphX,以及用于增量计算和流处理的 结构化流

下载

从项目网站的下载页面获取 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 既可以独立运行,也可以在现有多个集群管理器上运行。它目前提供以下几种部署选项:

下一步

编程指南

API 文档

部署指南

其他文档

外部资源