

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

# 使用 AWS Glue Studio 管理 ETL 任務
<a name="managing-jobs-chapter"></a>

您可以使用 AWS Glue Studio 中的簡單圖形介面來管理您的 ETL 任務。使用導覽功能表，選擇 **Jobs (任務)** 來檢視 **Jobs (任務)** 頁面。在此頁面上，您可以查看您使用 AWS Glue Studio 或 AWS Glue 主控台建立的所有任務。您可以在此頁面上檢視、管理和執行您的任務。

**Topics**
+ [開始任務執行](#start-jobs)
+ [排程任務執行](#schedule-jobs)
+ [管理任務排程](#manage-schedules)
+ [停止任務執行](#stop-jobs)
+ [檢視您的任務](#view-jobs)
+ [檢視最近任務執行的資訊](#view-job-run-details)
+ [檢視任務指令碼](#view-job-script)
+ [修改任務屬性](#edit-jobs-properties)
+ [儲存任務](#save-job)
+ [複製任務](#clone-jobs)
+ [刪除任務](#delete-jobs)

## 開始任務執行
<a name="start-jobs"></a>

在 AWS Glue Studio 中，您可以隨需執行任務。一個任務可以執行多次，每次執行該任務時，AWS Glue 都會收集有關任務活動和效能的資訊。這些資訊稱為*任務執行*，並由任務執行 ID 識別。

您可以透過下列方式在 AWS Glue Studio 啟動任務執行：
+ 在 **Jobs (任務)** 頁面上，選擇您要開始的任務，然後選擇 **Run job (執行任務)** 按鈕。
+ 如果您在視覺化編輯器中檢視任務，且任務已儲存，您可以選擇 **Run (執行)** 按鈕開始任務執行。

如需任務執行的詳細資訊，請參閱 *AWS Glue 開發人員指南*中的[在 AWS Glue 主控台上使用工作](https://docs.aws.amazon.com/glue/latest/dg/console-jobs.html)。

## 排程任務執行
<a name="schedule-jobs"></a>

在 AWS Glue Studio 中，您可以建立排程，讓您的任務在特定時間執行。您可以指定限制條件，例如任務的執行次數、在一週中的哪一天執行，以及執行的時間。這些限制條件是根據 `cron` 並且與 `cron` 具有相同限制。例如，如果您選擇在每個月的 31 日執行您的任務，請注意有些月份不到 31 天。如需 `cron` 的詳細資訊，請參閱 *AWS Glue 開發人員指南*中的 [Cron 表達式](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions)。

**根據排程執行任務**

1. 使用以下其中一個方法建立任務排程：
   + 在 **Jobs (任務)** 頁面上，選擇您要建立排程的任務，選擇 **Actions (動作)**，然後選擇 **Schedule job (排程任務)**。
   + 如果您在視覺化編輯器中檢視任務，且任務已儲存，請選擇 **Schedules (排程)** 索引標籤。然後選擇 **Create Schedule (建立排程)**。

1. 在 **Schedule job run (排程任務執行)** 頁面上，輸入下列資訊：
   + **Name (名稱)**：輸入任務排程的名稱。
   + **Frequency (頻率)**：輸入任務排程的頻率。您可以選擇下列選項：
     + **Hourly (每小時)**：任務將每小時執行一次，從特定分鐘開始。您可以指定任務應執行的小時 **Minute (分鐘)** 數。依預設，如果您選擇每小時，任務會在小時開始執行 (分鐘 0)。
     + **Daily (每日)**：任務將每天執行，從一個時間開始。您可以指定任務應執行的小時 **Minute (分鐘)** 數以及任務的 **Start hour (起始小時)**。小時數使用 23 小時制指定，您可以使用數字 13 到 23 表示下午的時間。分鐘和小時的預設值為 0，也就是說，如果您選取 **Daily (每日)**，則任務預設在午夜執行。
     + **Weekly (每週)**：任務將在每週的一天或多天執行。除了上述與「每日」相同的設定之外，您還可以選擇在一週的哪幾天執行任務。您可以選擇一或多個天。
     + **Monthly (每月)**：任務將在每個月的特定日期執行。除了上述與「每日」相同的設定之外，您還可以選擇在一個月的哪一天執行任務。將日指定為 1 到 31 之間的數值。如果您選取了一個月中不存在的日期，例如二月 30 日，那麼該月不會執行任務。
     + **Custom (自訂)**：使用 `cron` 語法為您的任務排程輸入表達式。Cron 表達式允許您建立更複雜的排程，例如每月的最後一天 (而不是每月的特定日期) 或是每三個月的第 7 天和第 21 天。

       請參閱 *AWS Glue 開發人員指南*中的 [Cron 表達式](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions)
   + **Description (描述)**：您可以選擇性地輸入您的任務排程的說明。如果您計劃針對多個任務使用相同的排程，具有描述可讓您更容易判斷任務排程的作用。

1. 選擇 **Create schedule (建立排程) **以儲存任務排程。

1. 建立排程後，成功訊息會出現在主控台頁面頂端。您可以選擇此橫幅中的 **Job Details (任務詳細資訊)** 以檢視任務詳細資訊。這會開啟視覺化任務編輯器頁面，其中選取了 **Schedules (排程)** 索引標籤。

## 管理任務排程
<a name="manage-schedules"></a>

建立任務的排程後，您可以在視覺化編輯器中開啟任務，然後選擇 **Schedules (排程)** 索引標籤來管理排程。

在視覺化編輯器的 **Schedules (排程)** 索引標籤，您可以執行以下任務：
+ 建立新排程。

  選擇 **Create schedule (建立排程)**，然後輸入排程的資訊，如[排程任務執行](#schedule-jobs)所述。
+ 編輯現有排程。

  選擇您要編輯的排程，然後選擇 **Action (動作)**，接著選擇 **Edit schedule (編輯排程)**。當您選擇編輯現有的排程時，**Frequency (頻率)** 顯示為 **Custom (自訂)**，且排程會顯示為 `cron` 表達式。您可以修改 `cron` 表達式，或使用 **Frequency (頻率)** 按鈕指定新排程。當您完成變更後，請選擇 **Update schedule (更新排程)**。
+ 暫停作用中的排程。

  選擇作用中排程，然後選擇 **Actions (動作)**，接著選擇 **Pause schedule (暫停排程)**。排程會立即停用。選擇重新整理 (重新載入) 按鈕，以查看更新的任務排程狀態。
+ 繼續暫停的排程。

  選擇停用的排程，然後選擇 **Actions (動作)**，接著選擇 **Resume schedule (繼續排程)**。排程會立即啟動。選擇重新整理 (重新載入) 按鈕，以查看更新的任務排程狀態。
+ 刪除排程。

  選擇您要移除的排程，然後選擇 **Actions (動作)**，接著選擇 **Delete schedule (刪除排程)**。排程會立即刪除。選擇重新整理 (重新載入) 按鈕，以查看更新的任務排程清單。排程會顯示 **Deleting (正在刪除)** 狀態，直到它被完全移除。

## 停止任務執行
<a name="stop-jobs"></a>

您可以在任務完成任務執行之前停止任務。如果您知道任務設定不正確，或任務花太長時間無法完成，您可以選擇此選項。

在 **Monitoring (監控)** 頁面的 **Job runs (任務執行)** 清單中，選擇您要停止的任務，選擇 **Actions (動作)**，接著選擇 **Stop run (停止執行)**。

## 檢視您的任務
<a name="view-jobs"></a>

您可以在 **Jobs (任務)** 頁面上檢視您所有的任務。若要存取此頁面，請選擇導覽窗格中的 **Jobs (任務)**。

在 **Jobs (任務)** 頁面上，您可以看到在帳戶中建立的所有任務。**Your jobs (您的任務)** 清單會顯示任務名稱、其類型、該任務上次執行的狀態，以及建立任務和上次修改的日期。您可以選擇任務的名稱，以查看該任務的詳細資訊。

您也可以使用監控儀表板來檢視您的所有任務。若要存取儀表板，請選擇導覽窗格中的 **Monitoring (監控)**。

### 自訂任務顯示
<a name="view-jobs-customize"></a>

您可以在 **Jobs (任務)** 頁面的 **Your jobs (您的任務)** 區段自訂任務的顯示方式。此外，您可以在搜尋文字欄位中輸入文字，以僅顯示名稱包含該文字的任務。

如果您選擇 **Your jobs** (您的任務) 區段中的設定圖示 ![\[\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/manage-console-icon-settings.png)，您可以自訂 AWS Glue Studio 在資料表中顯示資訊的方式。您可以選擇在顯示中將文字行換行、變更頁面上顯示的任務數目，以及指定要顯示的欄。

## 檢視最近任務執行的資訊
<a name="view-job-run-details"></a>

任務可以隨著來源位置新增資料而執行多次。每次任務執行，都會為任務執行指派一個唯一的 ID，並收集有關該任務執行的資訊。您可以使用下列方法，檢視此資訊：
+ 選擇視覺化編輯器的 **Runs (執行)** 索引標籤，以檢視目前顯示任務的任務執行資訊。

  在 **Runs (執行)** 索引標籤 (**Recent job runs (最近任務執行)** 頁面)，每個任務執行都會有一張卡片。**Runs (執行)** 索引標籤顯示的資訊包含：
  + 任務執行 ID
  + 嘗試執行此任務的次數
  + 任務執行的狀態
  + 任務執行的開始及結束時間
  + 任務執行的執行時間
  + 任務日誌檔的連結
  + 任務錯誤日誌檔的連結
  + 失敗任務傳回的錯誤
+ 您可以選取工作執行，以檢視有關該工作的其他資訊，包括以下內容：
  + **輸入引數**
  + **連續日誌**
  + **指標**：您可以查看基本指標的視覺效果。如需有關包含之指標的詳細資訊，請參閱 [檢視 Spark 任務執行的 Amazon CloudWatch 指標](view-job-runs.md#monitoring-job-run-metrics)。
  + **Spark UI** – 您可以在 Spark UI 中將工作的 Spark 日誌視覺化。如需有關使用 Spark Web UI 的詳細資訊，請參閱 [使用 Apache Spark web UI 監控任務](monitor-spark-ui.md)。必須依照 [為 AWS Glue 任務啟用 Apache Spark web UI](monitor-spark-ui-jobs.md) 中的程序來啟用此功能。

您可以選取**檢視詳細資料**，以在任務執行詳細資料頁面中檢視類似的資訊。或者，您也可以透過**監控**頁面，導覽至任務執行詳細資料頁面。在導覽窗格中，選擇 **Monitoring (監控)**。向下捲動到 **Job runs (任務執行)** 清單。選擇任務，然後選擇 **View run details (檢視執行詳細資訊)**。內容在[檢視任務執行的詳細資訊](view-job-runs.md#monitoring-job-run-details)中描述。

如需任務日誌的詳細資訊，請參閱[檢視任務執行日誌](view-job-runs.md#monitoring-job-run-logs)。

## 檢視任務指令碼
<a name="view-job-script"></a>

在您提供任務中所有節點的資訊之後，AWS Glue Studio 會產生由任務用於從來源讀取資料、轉換資料，並在目標位置寫入資料的指令碼。如果您儲存任務，您可以隨時檢視此指令碼。

**檢視為任務產生的指令碼**

1. 在導覽窗格中，選擇 **Jobs (任務)**。

1. 在 **Jobs (任務)** 頁面的 **Your jobs (您的任務)** 清單中，選擇要檢閱的任務名稱。或者，您可以在清單中選擇一個任務，選擇 **Actions (動作)** 功能表，然後選擇 **Edit job (編輯任務)**。

1. 在視覺化編輯器頁面上，選擇頂端的 **Script (指令碼)** 索引標籤以檢視任務指令碼。

   如果想要編輯任務指令碼，請參閱[AWS Glue 程式設計指南](edit-script.md)。

## 修改任務屬性
<a name="edit-jobs-properties"></a>

任務圖表中的節點定義了任務所執行的動作，但您也可以為任務設定幾個屬性。這些屬性會決定執行任務的環境、其使用的資源、閾值設定、安全性設定等。

**自訂任務執行環境**

1. 在導覽窗格中，選擇 **Jobs (任務)**。

1. 在 **Jobs (任務)** 頁面的 **Your jobs (您的任務)** 清單中，選擇要檢閱的任務名稱。

1. 在視覺化編輯器頁面上，選擇任務編輯窗格頂端的 **Job Details (任務詳細資訊)**。

1. 視需要修改任務屬性。

   如需任務屬性的詳細資訊，請參閱 *AWS Glue 開發人員指南*中的[定義任務屬性](https://docs.aws.amazon.com/glue/latest/dg/add-job.html#create-job)。

1. 如果您需要指定下列額外任務屬性，請展開 **Advanced properties (進階屬性)** 區段：
   + **Script filename (指令碼檔案名稱)** – 在 Amazon S3 中儲存任務指令碼的檔案名稱。
   + **Script path (指令碼路徑)** – 儲存任務指令碼的 Amazon S3 位置。
   + **任務指標** – （不適用於 Python shell 任務） 在此任務執行時開啟 Amazon CloudWatch 指標的建立。
   + **Continuous logging (連續記錄)** – (不適用於 Python Shell 任務) 開啟連續記錄至 CloudWatch，以便在任務完成之前可以檢視記錄。
   + **Spark UI** 和 **Spark UI logs path (Spark UI 日誌路徑)** – (不適用於 Python Shell 任務) 開啟使用 Spark UI 來監控此任務，並指定 Spark UI 日誌的位置。
   + **Maximum concurrency (最大並行數量)** – 設定此任務允許並行執行的最大數量。
   + **Temporary path (暫存路徑)** – 提供 Amazon S3 裡的工作目錄位置，可在 AWS Glue 執行任務指令碼時寫入暫時的中繼結果。
   + **Delay notification threshold (minutes) (延遲通知閾值 (分鐘))** – 為任務指定延遲閾值。如果任務執行的時間超過閾值所指定的時間，AWS Glue 會將任務的延遲通知傳送至 CloudWatch。
   + **Security configuration (安全組態)** 和 **Server-side encryption (伺服器端加密)** – 使用這些欄位來選擇任務的加密選項。
   + **Use Glue Data Catalog as the Hive metastore (使用 Glue Data Catalog 做為 Hive 中繼存放區)** – 如果您想要使用 AWS Glue Data Catalog 作為 Apache Hive 中繼存放區的替代選項，請選擇此選項。
   + **Additional network connection (額外的網路連線)** – 對於 VPC 中的資料來源，您可以指定 `Network` 連線類型，以確保您的任務透過 VPC 存取您的資料。
   + **Python library path (Python 程式庫路徑)**、**Dependent jars path (相依 jar 路徑)** (不適用於 Python Shell 任務)，或 **Referenced files path (參考檔案路徑)** – 使用這些欄位來指定任務執行指令碼時所使用的其他檔案位置。
   + **Job Parameters (任務參數)** – 您可新增一組索引鍵/值對，以具名參數的形式傳遞至任務指令碼。在 Python AWS Glue API呼叫 時，最好依名稱明確傳遞參數。如需在任務指令碼中使用參數的詳細資訊，請參閱 *AWS Glue 開發人員指南*中的[在 AWS Glue 中傳遞和存取 Python 參數](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html#aws-glue-programming-python-calling-parameters)。
   + **Tags (標籤)** – 您可以在任務中新增標籤，協助您整理和識別它們。

1. 修改任務屬性之後，請儲存任務。

### 在 Amazon S3 上儲存 Spark 隨機播放檔案
<a name="configure-shuffle"></a>

某些 ETL 任務需要讀取和合併來自多個分割區的資訊，例如，使用聯結轉換時。這項作業稱為*隨機播放*。在隨機播放期間，資料會寫入磁碟並透過網路傳輸。使用 AWS Glue 3.0 版，您可以將 Amazon S3 設定為這些檔案的儲存位置。AWS Glue 提供隨機播放管理器，可在 Amazon S3 之間寫入和讀取隨機檔案。與本機磁碟 (或針對 Amazon EC2 進行大量最佳化的 Amazon EBS) 相比，從 Amazon S3 寫入和讀取隨機檔案的速度較慢 (5%-20%)。不過，Amazon S3 提供無限儲存容量，因此在執行任務時無須擔心「`No space left on device`」錯誤。

**將您的任務設定為使用 Amazon S3 進行隨機播放檔案**

1. 在 **Jobs (任務)** 頁面的 **Your jobs (您的任務)** 清單中，選擇要修改的任務名稱。

1. 在視覺化編輯器頁面上，選擇任務編輯窗格頂端的 **Job Details (任務詳細資訊)**。

   向下捲動到 **Job Parameters (任務參數)** 區段。

1. 指定下列索引鍵/值組。
   + `--write-shuffle-files-to-s3` — `true`

     這是 AWS Glue 中設定隨機播放管理器的主要參數，使用 Amazon S3 儲存貯體來寫入和讀取隨機資料。此參數的預設值為 `false`。
   + (選用) `--write-shuffle-spills-to-s3` — `true`

     此參數可讓您將溢出檔案卸載到 Amazon S3 儲存貯體，這為 AWS Glue 中的 Spark 任務提供額外的彈性。只有將大量資料溢出到磁碟的大型工作負載才需要它。此參數的預設值為 `false`。
   + (選用) `--conf spark.shuffle.glue.s3ShuffleBucket` — `S3://<shuffle-bucket>`

     此參數指定寫入隨機檔案時要使用的 Amazon S3 儲存貯體。如果您未設定此參數，則位置是為 **Temporary path (暫存路徑)** 指定之位置中的 `shuffle-data` 資料夾 (`--TempDir`)。
**注意**  
確定隨機播放儲存貯體的位置與任務執行 AWS 區域 所在的位置相同。  
此外，隨機播放服務不會在任務執行完畢後清除檔案，因此您應該在隨機儲存貯體位置上設定 Amazon S3 儲存生命週期政策。如需詳細資訊，請參閱 *Amazon S3 使用者指南*中的[管理儲存生命週期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)。

## 儲存任務
<a name="save-job"></a>

紅色的 **Job has not been saved (尚未儲存任務)** 標註會顯示在 **Save (儲存)** 按鈕左側，直到您儲存任務為止。

![\[「儲存」按鈕左側有「尚未儲存任務」標籤的紅色橢圓形。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/edit-graph-callout-not-saved_GA.png)


**儲存任務**

1. **Visual (視覺效果)** 和 **Job Details (任務詳細資訊)** 索引標籤中提供所有必要的資訊。

1. 選擇 **Save (儲存)** 按鈕。

   儲存任務後，「未儲存」標註會變更為顯示上次儲存任務的時間和日期。

如果您在儲存任務前離開 AWS Glue Studio，則下次您登入 AWS Glue Studio 時會出現通知。通知會指出有未儲存的任務，並詢問您是否要還原它。如果您選擇還原任務，您可以繼續編輯任務。

### 故障診斷儲存任務時發生的錯誤
<a name="save-job-troubleshooting"></a>

如果選擇 **Save (儲存)** 按鈕，但是您的任務遺失了一些必要資訊，則會在遺失資訊的索引標籤上出現紅色標註。標註中的數字表示偵測到的遺失欄位數目。

![\[顯示名為「Untitled job (未命名任務)」之任務的視覺化編輯器窗格索引標籤的螢幕擷取畫面，在 [Visual (視覺效果)] 索引標籤上標註 2，以及 [Job Details (任務詳細資訊)] 索引標籤上標註 1。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/screenshot-save-job-error-in-graph-GA2.png)

+ 如果視覺化編輯器中的節點未正確設定，**Visual (視覺效果)** 索引標籤會顯示紅色標註，並且出現錯誤的節點顯示警告符號 ![\[A red triangle with an exclamation point in the center\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/edit-graph-warning_icon.png)。

  1. 選擇節點。在節點詳細資訊面板中，紅色標註會出現在遺失或不正確資訊所在的索引標籤上。

  1. 在節點詳細資訊面板中選擇顯示紅色標註的索引標籤，然後找到反白顯示的問題欄位。欄位下方的錯誤訊息會提供問題的其他資訊。  
![\[顯示任務編輯器中 [Visual (視覺效果)] 索引標籤的螢幕擷取畫面，其標註為 2。會選取以警告標籤標記的資料來源節點。在節點詳細資訊面板中，[Data source properties (資料來源屬性)] 索引標籤具有標示為 2 的標註，並已選取。兩個欄位，資料庫和表被概述為紅色，並在它們下面有訊息表明這些欄位中需要一個值。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/screenshot-save-job-error-in-graph2.png)
+ 如果任務屬性發生問題，**Job Details (任務詳細資訊)** 索引標籤會顯示紅色標註。選擇該標簽并确定問題欄位，這些欄位會突出顯示。欄位下方的錯誤訊息提供問題的其他資訊。  
![\[顯示任務編輯器中 [Job Details (任務詳細資訊)] 索引標籤的螢幕擷取畫面，並標註為 1。「IAM 角色」欄位以紅色概述，下方有一則訊息，指出需要值。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/screenshot-save-job-error-in-job-details.png)

## 複製任務
<a name="clone-jobs"></a>

您可以使用**複製任務**動作，將現有任務複製到新任務中。

**透過複製現有任務建立新任務**

1. 在 **Jobs (任務)** 頁面的 **Your jobs (您的任務)** 清單中，選擇要複製的任務。

1. 從 **Actions (動作)** 功能表，選擇 **Clone job (複製任務)**。

1. 輸入新任務的名稱。然後您可以儲存或編輯任務。

## 刪除任務
<a name="delete-jobs"></a>

您可以移除不再需要的任務。您可以在單一作業中刪除一或多個任務。

**從 AWS Glue Studio 中移除任務**

1. 在 **Jobs (任務)** 頁面的 **Your jobs (您的任務)** 清單中，選擇要刪除的任務。

1. 在 **Actions (動作)** 選單中，選擇 **Delete job (刪除任務)**。

1. 確認您要刪除任務，方法是輸入**delete**。

您也可以在檢視視覺化編輯器中任務的 **Job Details (任務詳細資訊)** 索引標籤時刪除儲存的任務。