

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Apache Spark
<a name="emr-spark"></a>

[Apache Spark](https://www.amazonaws.cn/emr/features/spark/) 是一个分布式处理框架和编程模型，可帮助您使用 Amazon EMR 集群进行机器学习、流处理或图形分析。Spark 与 Apache Hadoop 类似，也是一款常用于大数据工作负载的开源、分布式处理系统。但是，Spark 与 Hadoop MapReduce 有几个显著的区别。Spark 拥有经过优化的有向无环图 (DAG) 执行引擎并会积极地在内存中缓存数据，这可提高性能，尤其是对于某些算法和交互式查询。

Spark 内在支持使用 Scala、Python 和 Java 编写的应用程序。它还包括几个紧密集成的库，用于 SQL ([Spark](https://spark.apache.org/sql/))、机器学习 ([MLlib](https://spark.apache.org/mllib/))、流处理（[Spark](https://spark.apache.org/streaming/) 流）和图形处理（[GraphX](https://spark.apache.org/graphx/)）。这些工具可让您更轻松地在各种使用案例中充分发挥 Spark 框架的优势。

您可以在 Amazon EMR 集群上与其他 Hadoop 应用程序一同安装 Spark，它还能借助 Amazon EMR 文件系统（EMRFS）直接访问 Amazon S3 中的数据。Hive 还与 Spark 集成，因此你可以使用 HiveContext 对象通过 Spark 运行 Hive 脚本。Hive 上下文作为 `sqlContext` 包含在 Spark Shell 中。

有关使用 Spark 设置 EMR 集群和分析示例数据集的示例教程，请参阅新闻博客上的[教程：Amazon EMR 入门](https://docs.amazonaws.cn/emr/latest/ManagementGuide/emr-gs.html)。 Amazon 

你可以使用 Apache Spark 故障排除代理对 EC2 上的 EMR 和 EMR Serverless 上的 Apache Spark 应用程序进行故障排除。要了解更多信息，请参阅[什么是 Amazon EMR 的 Apache Spark 故障排除代理](spark-troubleshoot.md)。

**重要**  
Apache Spark 版本 2.3.1（从 Amazon EMR 发行版 5.16.0 开始提供）解决了 [CVE-2018-8024](https://nvd.nist.gov/vuln/detail/CVE-2018-8024) 和 [CVE-2018-1334](https://nvd.nist.gov/vuln/detail/CVE-2018-1334) 问题。建议您将 Spark 的早期版本迁移到 Spark 2.3.1 版本或更高版本。

下表列出了 Amazon EMR 7.x 系列的最新发行版附带的 Spark 的版本，以及 Amazon EMR 随 Spark 一起安装的组件。

有关此版本中与 Spark 一起安装的组件的版本，请参阅 [7.12.0 版本的组件](emr-7120-release.md)版本。


**emr-7.12.0 的 Spark 版本信息**  

| Amazon EMR 发行版标签 | Spark 版本 | 随 Spark 安装的组件 | 
| --- | --- | --- | 
| emr-7.12.0 | Spark 3.5.6-amzn-1 | delta, emrfs, emr-goodies, emr-ddb, emr-s3-select, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-hdfs-zkfc, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hudi, hudi-spark, iceberg, livy-server, nginx, r, spark-client, spark-history-server, spark-on-yarn, spark-yarn-slave | 

下表列出了 Amazon EMR 6.x 系列的最新发行版附带的 Spark 的版本，以及 Amazon EMR 随 Spark 一起安装的组件。

有关此发行版中随 Spark 安装的组件版本，请参阅[发行版 6.15.0 组件版本](emr-6150-release.md)。


**emr-6.15.0 的 Spark 版本信息**  

| Amazon EMR 发行版标签 | Spark 版本 | 随 Spark 安装的组件 | 
| --- | --- | --- | 
| emr-6.15.0 | Spark 3.4.1-amzn-2 | aws-sagemaker-spark-sdk, delta, emrfs, emr-goodies, emr-ddb, emr-s3-select, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hudi, hudi-spark, iceberg, livy-server, nginx, r, spark-client, spark-history-server, spark-on-yarn, spark-yarn-slave | 

**注意**  
Amazon EMR 发行版 6.8.0 随附 Apache Spar 3.3.0。此 Spark 发行版使用 Apache Log4j 2 和 `log4j2.properties` 文件，在 Spark 进程中配置 Log4j。如果您在集群中使用 Spark 或使用自定义配置参数创建 EMR 集群，并且希望升级到 Amazon EMR 发行版 6.8.0，则必须迁移到新的 `spark-log4j2` 配置分类和 Apache Log4j 2 的密钥格式。有关更多信息，请参阅 [从 Apache Log4j 1.x 迁移到 Log4j 2.x](emr-spark-configure.md#spark-migrate-logj42)。

下表列出了 Amazon EMR 5.x 系列的最新发行版附带的 Spark 的版本，以及 Amazon EMR 随 Spark 一起安装的组件。

有关此发行版中随 Spark 安装的组件版本，请参阅[发行版 5.36.2 组件版本](emr-5362-release.md)。


**emr-5.36.2 的 Spark 版本信息**  

| Amazon EMR 发行版标签 | Spark 版本 | 随 Spark 安装的组件 | 
| --- | --- | --- | 
| emr-5.36.2 | Spark 2.4.8-amzn-2 | aws-sagemaker-spark-sdk, emrfs, emr-goodies, emr-ddb, emr-s3-select, hadoop-client, hadoop-hdfs-datanode, hadoop-hdfs-library, hadoop-hdfs-namenode, hadoop-httpfs-server, hadoop-kms-server, hadoop-yarn-nodemanager, hadoop-yarn-resourcemanager, hadoop-yarn-timeline-server, hudi, hudi-spark, livy-server, nginx, r, spark-client, spark-history-server, spark-on-yarn, spark-yarn-slave | 

**Topics**
+ [使用 Apache Spark 创建集群](emr-spark-launch.md)
+ [在 Amazon EMR 6.x 上使用 Docker 运行 Spark 应用程序](emr-spark-docker.md)
+ [在亚马逊 EMR 上使用 Amazon Glue 数据目录和 Spark](emr-spark-glue.md)
+ [在亚马逊 EMR 上使用 Spark 在 Amazon Glue 数据目录中使用多目录层次结构](emr-multi-catalog.md)
+ [配置 Spark](emr-spark-configure.md)
+ [什么是 Amazon EMR 的 Apache Spark 故障排除代理](spark-troubleshoot.md)
+ [优化 Spark 性能](emr-spark-performance.md)
+ [Spark 结果片段缓存](emr-spark-fragment-result-caching.md)
+ [使用 Nvidia RAPIDS Accelerator for Apache Spark](emr-spark-rapids.md)
+ [访问 Spark Shell](emr-spark-shell.md)
+ [使用 Amazon SageMaker Spark 进行机器学习](emr-spark-sagemaker.md)
+ [编写 Spark 应用程序](emr-spark-application.md)
+ [使用 Amazon S3 提高 Spark 性能](emr-spark-s3-performance.md)
+ [添加 Spark 步骤](emr-spark-submit-step.md)
+ [查看 Spark 应用程序历史记录](emr-spark-application-history.md)
+ [访问 Spark 网站 UIs](emr-spark-webui.md)
+ [使用 Spark 结构化流 Amazon Kinesis Data Streams 连接器](emr-spark-structured-streaming-kinesis.md)
+ [将适用于 Apache Spark 的 Amazon Redshift 集成与 Amazon EMR 结合使用](emr-spark-redshift.md)
+ [Spark 发行历史记录](Spark-release-history.md)
+ [在 Amazon EMR 中使用物化视图](emr-spark-materialized-views.md)