設定 Spark 工作的工作屬性 AWS Glue - AWS Glue

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

設定 Spark 工作的工作屬性 AWS Glue

AWS Glue 任務封裝了一個指令碼,會連線至您的來源資料、處理資料,然後將它寫出至您的資料目標。一般而言,任務會執行擷取、轉換和載入 (ETL) 指令碼。任務也可以執行一般用途的 Python 指令碼 (Python Shell 任務)。AWS Glue 觸發程序可以根據排程或事件,或隨需啟動任務。您可以監控任務執行以了解執行時間指標,例如完成狀態、持續時間和開始時間。

您可以使用 AWS Glue 產生的指令碼,也可以提供自己的指令碼。透過原始碼結構描述和目標位置或結構描述,程式AWS Glue碼產生器可以自動建立 Apache Spark API (PySpark) 指令碼。您可以將此指令碼做為起點,編輯其內容以符合您的目標。

AWS Glue 可以用多種資料格式撰寫輸出檔案,包括 JSON、CSV、ORC (最佳化資料列單欄式)、Apache Parquet 和 Apache Avro。某些資料格式也可寫入常見的壓縮格式。

AWS Glue 中有三種任務類型:Spark串流 ETLPython shell

  • 星火作業是在由管理的 Apache 星火環境中運行 AWS Glue。它會分批次處理資料。

  • 串流 ETL 任務類似 Spark 任務,不同之處在於它會在資料串流上執行 ETL。它使用 Apache Spark 結構化串流框架。某些 Spark 任務功能不適用於串流 ETL 任務。

  • 將 Python 指令碼作為 shell 執行,並根據您使用的 AWS Glue 版本支援 Python 版本的 Python shell 任務執行。您可以使用這些任務來排程及執行不需要 Apache Spark 環境的任務。

定義 Spark 任務的任務屬性

若是在 AWS Glue 主控台定義任務,請提供屬性值以控制 AWS Glue 執行階段環境。

以下清單說明 Spark 任務的屬性。如需了解 Python shell 任務的屬性,請參閱 為 Python shell 任務定義任務屬性。如需了解串流 ETL 任務的屬性,請參閱 定義串流 ETL 任務的任務屬性

這些內容會依它們在 AWS Glue 主控台 Add job (新增任務) 精靈中出現的順序列出。

名稱

提供長度上限為 255 個字元的 UTF-8 字串。

描述

提供最多 2048 個字元的選擇性說明。

IAM 角色

指定 IAM 角色以授權使用執行工作和存取資料存放區所需的資源。如需在 AWS Glue 執行任務之許可的詳細資訊,請參閱 AWS Glue 的身分識別與存取管理

Type

ETL 工作的類型。這會根據您選取的資料來源類型自動設定。

AWS Glue 版本

AWS Glue 版本會決定任務可用的 Apache Spark 和 Python 版本,如下表中指定。

AWS Glue 版本 支援的 Spark 和 Python 版本
4.0
  • Spark 3.3.0

  • Python 3.10

3.0
  • Spark 3.1.1

  • Python 3.7

2.0
  • Spark 2.4.3

  • Python 3.7

1.0
  • Spark 2.4.3

  • Python 2.7

  • Python 3.6

0.9
  • Spark 2.2.1

  • Python 2.7

工作者類型

可使用以下工作者類型:

AWS Glue 工作者上可用的資源是以 DPU 來衡量。DPU 是相對的處理能力,包含 4 個 vCPU 的運算容量和 16 GB 的記憶體。

  • G.1X – 選擇這種類型時,您也要提供 工作者數目 的值。每個工作者都會映射到 1 個 DPU (4 個 vCPU、16 GB 記憶體),外加 84 GB 磁碟 (大約 34 GB 可用)。我們建議將此工作者類型用於資料轉換、聯結和查詢等工作負載,以提供可擴展且符合成本效益的方式來執行大部分任務。

  • G.2X – 選擇這種類型時,您也要提供 工作者數目 的值。每個工作者都會映射到 2 個 DPU (8 個 vCPU、32 GB 記憶體),外加 128 GB 磁碟 (大約 77 GB 可用)。我們建議將此工作者類型用於資料轉換、聯結和查詢等工作負載,以提供可擴展且符合成本效益的方式來執行大部分任務。

  • G.4X – 選擇這種類型時,您也要提供 工作者數目 的值。每個工作者都會映射到 4 個 DPU (16 個 vCPU、64 GB 記憶體),外加 256 GB 磁碟 (大約 235 GB 可用)。我們建議工作負載包含最嚴苛轉換、彙總、聯結和查詢的任務採用這種工作者類型。此 Worker 類型僅適用於以下 AWS 區域 3.0 或更新AWS Glue版本的 Spark ETL 工作:美國東部 (俄亥俄)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、亞太區域 (新加坡)、亞太區域 (雪梨)、亞太區域 (東京)、加拿大 (中部)、歐洲 (法蘭克福)、歐洲 (愛爾蘭) 和歐洲 (斯德哥爾摩)。

  • G.8X – 選擇這種類型時,您也要提供 工作者數目 的值。每個工作者都會映射到 8 個 DPU (32 個 vCPU、128 GB 記憶體),外加 512 GB 磁碟 (大約 487 GB 可用)。我們建議工作負載包含最嚴苛轉換、彙總、聯結和查詢的任務採用這種工作者類型。此背景工作類型僅適用於 3.0 AWS Glue 版或更新版本的 Spark ETL 工作,與G.4X背景工作者類型支援的相同 AWS 區域。

  • G.025X – 選擇這種類型時,您也要提供 工作者數目 的值。每個工作者都會映射到 0.25 個 DPU (2 個 vCPU、4 GB 記憶體),外加 84 GB 磁碟 (大約 34 GB 可用)。我們建議低容量串流任務採用這種工作者類型。此工作者類型僅適用於 AWS Glue 3.0 版串流任務。

我們會根據您執行 ETL 任務所使用的 DPU 數量,以小時費率計費。如需詳細資訊,請參閱 AWS Glue 定價頁面

對於 AWS Glue 1.0 版或更早版本的任務,當您使用主控台設定任務並指定 Worker type (工作者類型)Standard (標準),會設定 Maximum capacity (容量上限),並且 Number of workers (工作者數目) 會變成 Maximum capacity (容量上限) - 1。如果您使用 AWS Command Line Interface (AWS CLI) 或 AWS SDK,您可以指定最大容量參數,或同時指定 Worker 類型Worker 數目

對於 AWS Glue 2.0 版或更新版本的任務,您無法指定容量上限。反之,您必須指定 Worker type (工作者類型)Number of workers (工作者數目)

語言

ETL 指令碼中的程式碼定義了任務的邏輯。指令碼可在 Python 或 Scala 中編寫。您可以選擇任務執行的指令碼是由 AWS Glue 產生或由您提供。您可以在 Amazon Simple Storage Service (Amazon S3) 中提供指令碼名稱和位置。請確認路徑中沒有跟指令碼目錄名稱相同的檔案。若要進一步了解如何編寫指令碼,請參閱 AWS Glue 編程指南

要求的工人數

對於大多數工作者類型,您必須指定任務時執行所分配的工作者數目。

任務書籤

指定 AWS Glue 在任務執行時如何處理狀態資訊。您可以讓任務書籤記住之前處理過的資料、更新狀態資訊,或是忽略狀態資訊。如需詳細資訊,請參閱 使用任務書籤追蹤處理的資料

柔性執行

當您使用 AWS Studio 或 API 設定工作時,您可以指定標準或彈性的工作執行類別。您的任務可能具有不同程度的優先順序和時間敏感度。標準執行類別非常適合需要快速的任務啟動和專用資源的時間敏感型工作負載。

彈性執行類別適用於非緊急任務,例如生產前任務、測試和一次性資料載入。使用 AWS Glue 3.0 或更高版本和 G.1XG.2X 工作者類型的任務支援彈性任務執行。

彈性任務執行基於在任何時間點執行的工作者數目計費。針對執行中的彈性任務執行,可新增或移除工作者數目。計費方式不是簡單的 Max Capacity * Execution Time,每個工作者都會計入任務執行期間的時間。計費為 (Number of DPUs per worker * time each worker ran) 的總和。

如需詳細資訊,請參閱 AWS Studio 中的說明面板,或任務任務執行

重試次數

指定 AWS Glue 若失敗時應自動重新啟動任務的次數 (從 0 到 10)。達到逾時限制的任務不會重新啟動。

任務逾時

設定執行時間上限 (單位為分鐘)。批次任務的預設值為 2880 分鐘 (48 小時)。當任務執行時間超過此上限時,任務執行狀態會變更為 TIMEOUT

串流工作的逾時值必須小於 7 天或 10080 分鐘。當值保留空白時,如果您尚未設定維護時段,工作將在 7 天後重新啟動。如果您已設定維護時段,則維護時段將在 7 天後重新啟動。

工作逾時的最佳做法

工作會根據執行時間計費。為避免未預期的費用,請針對工作的預期執行時間設定適當的逾時值。

進階屬性
腳本文件名

工作的唯一指令碼名稱。無法命名為 「無標題」工作

腳本路徑

指令碼的 Amazon S3 位置。該路徑的格式必須是 s3://bucket/prefix/path/。它必須以斜線 (/) 結尾,且不包含任何檔案。

任務指標

執行此任務時,開啟或關閉 Amazon CloudWatch 指標的建立。若要檢視分析資料,您必須啟用此選項。如需如何開啟和視覺化呈現指標的詳細資訊,請參閱任務監控與偵錯

Job 觀察度量

執行此工作時,開啟其他可觀察 CloudWatch 度量的建立。如需詳細資訊,請參閱 使用 AWS Glue 可觀測性指標進行監控

連續記錄

開啟連續日誌記錄到 Amazon CloudWatch。如果未啟用此選項,則只有在任務完成後才能使用日誌。如需詳細資訊,請參閱 持續記錄 AWS Glue 任務

Spark UI

啟用 Spark UI 來監控此任務。如需詳細資訊,請參閱 為 AWS Glue 任務啟用 Apache Spark web UI

星火 UI 日誌路徑

啟用 Spark UI 時寫入日誌的路徑。

星火 UI 日誌記錄和監控配置

請選擇下列其中一個選項:

  • 標準:使用 AWS Glue 作業執行 ID 作為檔案名稱來寫入記錄。開啟主控台中的星火使用者介面監 AWS Glue 控。

  • 舊版:使用「火花應用程序-{時間戳}」作為文件名寫入日誌。不要打開星火 UI 監控。

  • 標準和舊版:將記錄檔寫入標準和舊版位置。開啟主控台中的星火使用者介面監 AWS Glue 控。

最大並行數量

設定此任務允許並行執行的最大數量。預設為 1。達到此閾值時,會傳回錯誤。可指定的最大值由服務限制來控制。例如,新的執行個體啟動時,如果有先前的任務仍在執行,您可能會想要傳回錯誤,以防相同任務的兩個執行個體同時執行。

暫時路徑

提供 Amazon S3 裡的任務目錄位置,可在 AWS Glue 執行指令碼時寫入暫時的中繼結果。請確認路徑中沒有跟暫時目錄名稱相同的檔案。當 AWS Glue 讀取和寫入至 Amazon Redshift 並使用特定的 AWS Glue 轉換時,會使用到此目錄。

注意

如果區域中尚未存在儲存貯體,則 AWS Glue Glue 會為任務建立暫時儲存貯體。此儲存貯體可能允許公開存取。您可以修改 Amazon S3 中的儲存貯體以設定的公有存取封鎖,或稍後在該區域的所有任務完成後刪除儲存貯體。

延遲通知閾值 (分鐘)

設定傳送延遲通知之前所要經過的時間閾值 (以分鐘為單位)。您可以設定這個閾值,以在 RUNNINGSTARTINGSTOPPING 任務執行所花的時間超過預期分鐘數時傳送通知。

安全組態

從清單中選擇安全組態。安全設定指定在 Amazon S3 目標上如何加密資料:不加密、使用 AWS KMS受管金鑰 (SSE-KMS) 或 Amazon S3 管理的加密金鑰 (SSE-S3) 進行伺服器端加密。

伺服器端加密

如果您選擇此選項,則 ETL 任務寫入 Amazon S3 時,資料會在靜態時加密 (使用 SSE-S3 加密)。您的 Amazon S3 資料目標和寫入 Amazon S3 暫時目錄的任何資料都會加密。系統會以任務參數的形式傳遞此選項。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的透過 Amazon S3 受管加密金鑰 (SSE-S3) 使用伺服器端加密來保護資料

重要

如果指定安全組態,則會忽略此選項。

使用 Glue 資料目錄做為 Hive 中繼存放區

選取以使用 AWS Glue Data Catalog 做為 Hive 中繼存放區。此任務所用的 IAM 角色必須具有 glue:CreateDatabase 許可。稱為「預設」的資料庫隨即在 Data Catalog 中建立 (如當時該資料庫尚未存在)。

連線

選擇虛擬私有雲端組態以存取位於虛擬私有雲 (VPC) 中的 Amazon S3 資料來源。您可以在中建立和管理網路連線 AWS Glue。如需詳細資訊,請參閱 連線至資料

Libraries (程式庫)
Python 庫路徑,從屬 JAR 路徑和引用的文件路徑

如果您的指令碼需要這些選項,請進行指定。定義此任務時,您可以為這些選項定義以逗號分隔的 Amazon S3 路徑。執行任務時,您可以覆寫這些路徑。如需詳細資訊,請參閱 提供您的自訂指令碼

任務參數

一組金鑰/值對,會以具名參數的形式傳遞至指令碼。這些是指令碼執行時使用的預設值,但您可以在觸發時或在執行任務階段覆寫。您必須在索引鍵名稱前加上 --;例如:--myKey。使用時,您可以將工作參數作為地圖傳遞 AWS Command Line Interface。

如需範例,請參閱 在 AWS Glue 中傳遞和存取 Python 參數 的 Python 參數。

標籤

使用 Tag key (標籤金鑰) 和選用的 Tag value (標籤值),標記您的任務。標籤鍵在建立後,將是唯讀狀態。應用標籤至某些資源,有助於您對其進行整理和識別。如需詳細資訊,請參閱 AWS 中的標籤 AWS Glue

存取 Lake Formation 受管資料表任務的限制

建立讀取或寫入由所管理之資料表的工作時,請記住下列注意事項和限制 AWS Lake Formation: