使用 AWS Glue Studio 管理 ETL 任務 - AWS Glue

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

使用 AWS Glue Studio 管理 ETL 任務

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

開始任務執行

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

您可以透過下列方式在 AWS Glue Studio 啟動任務執行:

  • Jobs (任務) 頁面上,選擇您要開始的任務,然後選擇 Run job (執行任務) 按鈕。

  • 如果您在視覺化編輯器中檢視任務,且任務已儲存,您可以選擇 Run (執行) 按鈕開始任務執行。

如需任務執行的詳細資訊,請參閱 AWS Glue 開發人員指南中的在 AWS Glue 主控台上使用工作

排程任務執行

在 AWS Glue Studio 中,您可以建立排程,讓您的任務在特定時間執行。您可以指定限制條件,例如任務的執行次數、在一週中的哪一天執行,以及執行的時間。這些限制條件是根據 cron 並且與 cron 具有相同限制。例如,如果您選擇在每個月的 31 日執行您的任務,請注意有些月份不到 31 天。如需 cron 的詳細資訊,請參閱 AWS Glue 開發人員指南中的 Cron 表達式

根據排程執行任務
  1. 使用以下其中一個方法建立任務排程:

    • Jobs (任務) 頁面上,選擇您要建立排程的任務,選擇 Actions (動作),然後選擇 Schedule job (排程任務)

    • 如果您在視覺化編輯器中檢視任務,且任務已儲存,請選擇 Schedules (排程) 索引標籤。然後選擇 Create Schedule (建立排程)

  2. 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 表達式

    • Description (描述):您可以選擇性地輸入您的任務排程的說明。如果您計劃針對多個任務使用相同的排程,具有描述可讓您更容易判斷任務排程的作用。

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

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

管理任務排程

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

在視覺化編輯器的 Schedules (排程) 索引標籤,您可以執行以下任務:

  • 建立新排程。

    選擇 Create schedule (建立排程),然後輸入排程的資訊,如排程任務執行所述。

  • 編輯現有排程。

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

  • 暫停作用中的排程。

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

  • 繼續暫停的排程。

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

  • 刪除排程。

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

停止任務執行

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

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

檢視您的任務

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

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

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

自訂任務顯示

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

如果您選擇 Your jobs (您的任務) 區段中的設定圖示 A gear symbol ,您可以自訂 AWS Glue Studio 在資料表中顯示資訊的方式。您可以選擇在顯示中將文字行換行、變更頁面上顯示的任務數目,以及指定要顯示的欄。

檢視最近任務執行的資訊

任務可以隨著來源位置新增資料而執行多次。每次任務執行,都會為任務執行指派一個唯一的 ID,並收集有關該任務執行的資訊。您可以使用下列方法,檢視此資訊:

  • 選擇視覺化編輯器的 Runs (執行) 索引標籤,以檢視目前顯示任務的任務執行資訊。

    Runs (執行) 索引標籤 (Recent job runs (最近任務執行) 頁面),每個任務執行都會有一張卡片。Runs (執行) 索引標籤顯示的資訊包含:

    • 任務執行 ID

    • 嘗試執行此任務的次數

    • 任務執行的狀態

    • 任務執行的開始及結束時間

    • 任務執行的執行時間

    • 任務日誌檔的連結

    • 任務錯誤日誌檔的連結

    • 失敗任務傳回的錯誤

  • 您可以選取工作執行,以檢視有關該工作的其他資訊,包括以下內容:

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

如需任務日誌的詳細資訊,請參閱檢視任務執行日誌

檢視任務指令碼

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

檢視為任務產生的指令碼
  1. 在導覽窗格中,選擇 Jobs (任務)

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

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

    如果想要編輯任務指令碼,請參閱AWS Glue 編程指南

修改任務屬性

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

自訂任務執行環境
  1. 在導覽窗格中,選擇 Jobs (任務)

  2. Jobs (任務) 頁面的 Your jobs (您的任務) 清單中,選擇要檢閱的任務名稱。

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

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

    如需任務屬性的詳細資訊,請參閱 AWS Glue 開發人員指南中的定義任務屬性

  5. 如果您需要指定下列額外任務屬性,請展開 Advanced properties (進階屬性) 區段:

    • Script filename (指令碼檔案名稱) – 在 Amazon S3 中儲存任務指令碼的檔案名稱。

    • Script path (指令碼路徑) – 儲存任務指令碼的 Amazon S3 位置。

    • Job metrics (任務指標) – (不適用於 Python Shell 任務) 此任務執行時開啟建立 Amazon CloudWatch 指標。

    • Continuous logging (連續記錄) – (不適用於 Python Shell 任務) 開啟連續記錄至 CloudWatch,以便在任務完成之前可以檢視記錄。

    • Spark UISpark 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 參數

    • Tags (標籤) – 您可以在任務中新增標籤,協助您整理和識別它們。

  6. 修改任務屬性之後,請儲存任務。

在 Amazon S3 上儲存 Spark 隨機播放檔案

某些 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 (您的任務) 清單中,選擇要修改的任務名稱。

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

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

  3. 指定下列索引鍵/值組。

    • --write-shuffle-files-to-s3true

      這是 AWS Glue 中設定隨機播放管理器的主要參數,使用 Amazon S3 儲存貯體來寫入和讀取隨機資料。此參數的預設值為 false

    • (選用) --write-shuffle-spills-to-s3true

      此參數可讓您將溢出檔案卸載到 Amazon S3 儲存貯體,這為 AWS Glue 中的 Spark 任務提供額外的彈性。只有將大量資料溢出到磁碟的大型工作負載才需要它。此參數的預設值為 false

    • (選用) --conf spark.shuffle.glue.s3ShuffleBucketS3://<shuffle-bucket>

      此參數指定寫入隨機檔案時要使用的 Amazon S3 儲存貯體。如果您未設定此參數,則位置是為 Temporary path (暫存路徑) 指定之位置中的 shuffle-data 資料夾 (--TempDir)。

      注意

      確定隨機儲存貯體位於任務執行的同一個 AWS 區域。

      此外,隨機播放服務不會在任務執行完畢後清除檔案,因此您應該在隨機儲存貯體位置上設定 Amazon S3 儲存生命週期政策。如需詳細資訊,請參閱 Amazon S3 使用者指南中的管理儲存生命週期

儲存任務

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

「儲存」按鈕左側有「尚未儲存任務」標籤的紅色橢圓形。
儲存任務
  1. Visual (視覺效果)Job Details (任務詳細資訊) 索引標籤中提供所有必要的資訊。

  2. 選擇 Save (儲存) 按鈕。

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

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

故障診斷儲存任務時發生的錯誤

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

顯示名為「Untitled job (未命名任務)」之任務的視覺化編輯器窗格索引標籤的螢幕擷取畫面,在 [Visual (視覺效果)] 索引標籤上標註 2,以及 [Job Details (任務詳細資訊)] 索引標籤上標註 1。
  • 如果視覺化編輯器中的節點未正確設定,Visual (視覺效果) 索引標籤會顯示紅色標註,並且出現錯誤的節點顯示警告符號 A red triangle with an exclamation point in the center

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

    2. 在節點詳細資訊面板中選擇顯示紅色標註的索引標籤,然後找到反白顯示的問題欄位。欄位下方的錯誤訊息會提供問題的其他資訊。

      顯示任務編輯器中 [Visual (視覺效果)] 索引標籤的螢幕擷取畫面,其標註為 2。會選取以警告標籤標記的資料來源節點。在節點詳細資訊面板中,[Data source properties (資料來源屬性)] 索引標籤具有標示為 2 的標註,並已選取。兩個欄位,資料庫和表被概述為紅色,並在它們下面有訊息表明這些欄位中需要一個值。
  • 如果任務屬性發生問題,Job Details (任務詳細資訊) 索引標籤會顯示紅色標註。選擇該標簽并确定問題欄位,這些欄位會突出顯示。欄位下方的錯誤訊息提供問題的其他資訊。

    顯示任務編輯器中 [Job Details (任務詳細資訊)] 索引標籤的螢幕擷取畫面,並標註為 1。「IAM 角色」欄位以紅色概述,下方有一則訊息,指出需要值。

複製任務

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

透過複製現有任務建立新任務
  1. Jobs (任務) 頁面的 Your jobs (您的任務) 清單中,選擇要複製的任務。

  2. Actions (動作) 功能表,選擇 Clone job (複製任務)

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

刪除任務

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

從 AWS Glue Studio 中移除任務
  1. Jobs (任務) 頁面的 Your jobs (您的任務) 清單中,選擇要刪除的任務。

  2. Actions (動作) 選單中,選擇 Delete job (刪除任務)

  3. 確認您要刪除任務,方法是輸入delete

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