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

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

下载中

从项目网站的 下载页面 获取 Spark。此文档适用于 Spark 版本 3.5.3。Spark 使用 Hadoop 的客户端库来支持 HDFS 和 YARN。下载包为一些流行的 Hadoop 版本预先打包。 用户还可以下载一个“无 Hadoop”二进制文件并通过 增强 Spark 的 classpath 使用任何 Hadoop 版本运行 Spark。 Scala 和 Java 用户可以使用其 Maven 坐标将 Spark 包含在他们的项目中,而 Python 用户可以从 PyPI 安装 Spark。

如果您想从源代码构建Spark,请访问 Building 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,设置 -Dio.netty.tryReflectionSetAccessible=true 是 Apache Arrow 库所必需的。这可以防止出现 java.lang.UnsupportedOperationException: sun.misc.Unsafe or java.nio.DirectByteBuffer.(long, int) not available 错误,当 Apache Arrow 在内部使用 Netty 时。

运行示例和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 [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 文档:

部署指南:

其他文档:

外部资源: