

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

# 使用適用於 Amazon EMR on EKS 的 Apache Livy 執行 Spark 應用程式
<a name="job-runs-apache-livy-run-spark"></a>

在使用 Apache Livy 執行 Spark 應用程式之前，請確定您已完成設定適用於 [Amazon EMR on EKS 的 Apache Livy](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/job-runs-apache-livy-setup.html) 和[適用於 Amazon EMR on EKS 的 Apache Livy 入門](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/job-runs-apache-livy-install.html)中的步驟。

您可以使用 Apache Livy 來執行兩種類型的應用程式：
+ 批次工作階段 – 一種 Livy 工作負載，用於提交 Spark 批次任務。
+ 互動式工作階段 – 一種 Livy 工作負載，提供程式設計和視覺化界面來執行 Spark 查詢。

**注意**  
來自不同工作階段的驅動程式和執行器 Pod 可以互相通訊。命名空間不保證 Pod 之間的任何安全性。Kubernetes 不允許特定命名空間內 Pod 子集的選擇性許可。

## 執行批次工作階段
<a name="job-runs-apache-livy-run-spark-batch"></a>

若要提交批次任務，請使用下列命令。

```
curl -s -k -H 'Content-Type: application/json' -X POST \
      -d '{
            "name": "my-session",
            "file": "entryPoint_location (S3 or local)",
            "args": ["argument1", "argument2", ...],
            "conf": {
                "spark.kubernetes.namespace": "<spark-namespace>",
                "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.12.0:latest",
                "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>"
            }
          }' <livy-endpoint>/batches
```

若要監控您的批次任務，請使用下列命令。

```
curl -s -k -H 'Content-Type: application/json' -X GET <livy-endpoint>/batches/my-session
```

## 執行互動式工作階段
<a name="job-runs-apache-livy-run-spark-interactive"></a>

若要使用 Apache Livy 執行互動式工作階段，請參閱下列步驟。

1. 請確定您能夠存取自我託管或受管 Jupyter 筆記本，例如 SageMaker AI Jupyter 筆記本。您的 jupyter 筆記本必須已安裝 [Sparkmagic](https://github.com/jupyter-incubator/sparkmagic/blob/master/README.md)。

1. 建立 Spark 組態 的儲存貯體`spark.kubernetes.file.upload.path`。確定 Spark 服務帳戶具有對儲存貯體的讀取和寫入存取權。如需如何設定 Spark 服務帳戶的詳細資訊，請參閱使用服務帳戶 (IRSA) 的 IAM 角色設定存取許可

1. 使用命令 在 Jupyter 筆記本中載入 Sparkmagic`%load_ext sparkmagic.magics`。

1. 執行 命令`%manage_spark`，使用 Jupyter 筆記本設定您的 Livy 端點。選擇**新增端點**索引標籤，選擇設定的身分驗證類型，將 Livy 端點新增至筆記本，然後選擇**新增端點**。

1. `%manage_spark` 再次執行 以建立 Spark 內容，然後前往**建立工作階段**。選擇 Livy 端點，指定唯一的工作階段名稱選擇語言，然後新增下列屬性。

   ```
   {
     "conf": {
       "spark.kubernetes.namespace": "livy-namespace",
       "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.12.0:latest",
       "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>", 
       "spark.kubernetes.file.upload.path": "<URI_TO_S3_LOCATION_>"
     }
   }
   ```

1. 提交應用程式並等待它建立 Spark 內容。

1. 若要監控互動式工作階段的狀態，請執行下列命令。

   ```
   curl -s -k -H 'Content-Type: application/json' -X GET livy-endpoint/sessions/my-interactive-session
   ```

## 監控 Spark 應用程式
<a name="job-runs-apache-livy-run-ui"></a>

若要使用 Livy UI 監控 Spark 應用程式的進度，請使用連結 `http://<livy-endpoint>/ui`。