

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

[Apache Spark](https://aws.amazon.com/emr/features/spark/) 是一種分散式處理架構和程式設計模型，可協助您使用 Amazon EMR 叢集執行機器學習、串流處理或圖形分析。與 Apache Hadoop 類似，Spark 是一種開放原始碼、分散式處理系統，通常用於大數據的工作負載。不過，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 叢集上安裝 Spark 以及其他 Hadoop 應用程式，也可以利用 Amazon EMR 檔案系統 (EMRFS) 直接存取 Amazon S3 中的資料。Hive 也與 Spark 整合，因此您可以使用 HiveContext 物件來使用 Spark 執行 Hive 指令碼。Hive 內容包含在 spark-shell 做為 `sqlContext`。

如需使用 Spark 設定 EMR 叢集和分析範例資料集的範例教學課程，請參閱 AWS 新聞部落格上的[教學課程：Amazon EMR 入門](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html)。

您可以使用 Apache Spark 故障診斷代理程式，對 EC2 上的 EMR 和 EMR Serverless 上的 Apache Spark 應用程式進行故障診斷。若要進一步了解，請參閱 [什麼是適用於 Amazon EMR 的 Apache Spark 故障診斷代理程式](spark-troubleshoot.md)。

**重要**  
自 Amazon EMR 5.16.0 版開始提供 Apache Spark 版本 2.3.1，以因應 [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 Spark 3.3.0。此 Spark 版本使用 Apache Log4j 2 和 `log4j2.properties` 檔案，以設定 Spark 程序中的 Log4j。如果您在叢集中使用 Spark，或使用自訂組態參數建立 EMR 叢集，並且想要升級至 Amazon EMR 6.8.0 版，則必須為 Apache Log4j 2 遷移至新的 `spark-log4j2` 組態分類和金鑰格式。如需詳細資訊，請參閱[從 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)
+ [在 AWS Amazon EMR 上使用 Glue Data Catalog 搭配 Spark](emr-spark-glue.md)
+ [在 Glue Data Catalog AWS 中使用 Amazon EMR 上的 Spark 的多目錄階層](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)
+ [使用適用於 Apache Spark 的 Nvidia RAPIDS Accelerator](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 Web UI](emr-spark-webui.md)
+ [使用 Spark 結構化串流 Amazon Kinesis Data Streams 連接器](emr-spark-structured-streaming-kinesis.md)
+ [使用 Amazon EMR 整合 Amazon Redshift 與 Apache Spark](emr-spark-redshift.md)
+ [Spark 版本歷史記錄](Spark-release-history.md)
+ [搭配 Amazon EMR 使用具體化視觀表](emr-spark-materialized-views.md)