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

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

下载

从项目网站的 下载页面 获取 Spark。 本文档适用于 Spark 3.5.5 版本。 Spark 使用 Hadoop 的客户端库来处理 HDFS 和 YARN。 下载包是为一些流行的 Hadoop 版本预先打包的。 用户也可以下载“Hadoop free”二进制文件,并通过 增强 Spark 的 classpath, 使用任何 Hadoop 版本运行 Spark。 Scala 和 Java 用户可以使用 Maven 坐标将其包含在项目中,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 可以独立运行,也可以在多个现有集群管理器上运行。 目前,它提供了以下几种部署选项

下一步去哪里

编程指南

API 文档

部署指南

其他文档

外部资源