在 AWS Glue 工作中使用工作參數 - AWS Glue

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

在 AWS Glue 工作中使用工作參數

建立 AWS Glue 工作時,您可以設定一些標準欄位,例如RoleWorkerType。您可以透過 Argument 欄位 (主控台中的任務參數) 提供其他組態資訊。在這些欄位中,您可以為 AWS Glue 工作提供本主題中列出的引數 (參數)。如需 AWS Glue 合 Job 的詳細資訊API,請參閱任務

設定任務參數

您可以透過主控台在 Job Parameters (任務參數) 標題下的 Job details (任務詳細資訊) 索引標籤中設定任務。您也可以透過設定或在工作NonOverridableArguments上設定,DefaultArguments或在工作執行中設Arguments定 AWS CLI 來配置工作。每次執行任務時,都會傳入任務上設定的引數,而在任務執行中設定的引數只會針對該個別執行傳入。

例如,下列是執行使用 --arguments 來設定任務參數之任務的語法。

$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py"'

存取任務參數

撰寫 AWS Glue 指令碼時,您可能會想要存取工作參數值,以改變您自己程式碼的行為。我們提供協助程式方法來在我們的程式庫中執行此操作。這些方法會解析覆寫任務參數值的任務執行參數值。解析在多個位置設定的參數時,任務 NonOverridableArguments 會覆寫任務執行 Arguments,這將覆寫任務 DefaultArguments

在 Python 中:

在 Python 任務中,我們提供了一個名為 getResolvedParameters 的函數。如需詳細資訊,請參閱使用 getResolvedOptions 存取參數。任務參數可在 sys.argv 變數中使用。

在 Scala 中:

在 Scala 任務中,我們提供了一個名為 GlueArgParser 的物件。如需詳細資訊,請參閱AWS Glue Scala GlueArgParser API。任務參數可在 sysArgs 變數中使用。

任務參數參考

AWS Glue 會辨識下列引數名稱,您可以使用這些引數名稱來設定工作和工作執行的指令集環境:

--additional-python-modules

以逗號分隔的清單,代表要安裝的一組 Python 套件。您可以從 PyPI 安裝套件或提供自訂發行版本。PyPI 套件項目的格式為 package==version,其中包含 PyPI 名稱和目標套件的版本。自訂發行版本項目是發行版本的 S3 路徑。

項目使用 Python 版本比對來比對套件和版本。這意味著您將需要使用兩個等號,例如 ==。還有其他版本匹配運算符,有關更多信息,請參閱 PEP440

若要將模組安裝選項傳遞給 pip3,請使用 --python-modules-installer-option 參數。

--auto-scale-within-microbatch

預設值為 false。此參數只能用於 AWS Glue 串流工作,這些工作會以一系列微型批次處理串流資料,且必須啟用 auto 調整規模。將此值設定為 false 時,會運算已完成微型批次之批次處理持續時間的指數移動平均值,並將此值與間格大小進行比較,以判斷是縱向擴展執行器數目還是縮減其規模。只有在微型批次完成時才會進行擴展。將此值設定為 true 時,在微型批次期間,當 Spark 任務數量保持不變 30 秒,或目前的批次處理大於間格大小時,它會縱向擴展。如果執行器閒置超過 60 秒,或批次處理持續時間的指數移動平均值較低,則執行器數量將下降。

--class

可作為您的 Scala 指令碼進入點的 Scala 類別。這只在您的 --job-language 設為 scala 才適用。

--continuous-log-conversionPattern

為啟用連續記錄的任務指定自訂轉換日誌模式。轉換模式僅適用於驅動程式日誌和執行程式日誌。它不會影響 AWS Glue 進度列。

--continuous-log-logGroup

為啟用連續記錄的任務指定自訂 Amazon CloudWatch 日誌群組名稱。

--continuous-log-logStreamPrefix

為啟用連續記錄的工作指定自訂 CloudWatch 記錄資料流前置詞。

--customer-driver-env-vars--customer-executor-env-vars

這些參數會分別為每個 Worker (驅動程式或執行程式) 在作業系統上設定環境變數。在 AWS Glue 之上建置平台和自訂架構時,您可以使用這些參數,讓使用者在其上撰寫工作。啟用這兩個標誌將允許您分別在驅動程序和執行程序上設置不同的環境變量,而不必在作業腳本本身中注入相同的邏輯。

範例使用方式

以下是使用這些參數的範例:

"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"", "—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"

在工作執行引數中設定這些值等同於執行下列命令:

在驅動程式中:

  • 匯出 CUSTOMER _ KEY1 = VAL1

  • 導出 CUSTOMER _ KEY2 =「瓦爾 2,值 2 的 2」

在遺囑執行人中:

  • 匯出 CUSTOMER _ KEY3 = VAL3

然後,在工作命令檔本身中,您可以使用os.environ.get("CUSTOMER_KEY1")或來擷取環境變數System.getenv("CUSTOMER_KEY1")

強制語法

定義環境變數時,請注意下列標準:

  • 每個金鑰都必須有CUSTOMER_ prefix.

    例如:for"CUSTOMER_KEY3=VAL3,KEY4=VAL4"KEY4=VAL4將被忽略而不設置。

  • 每個鍵和值對必須用一個逗號劃定。

    例如:"CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"

  • 如果「值」有空格或逗號,則必須在引號中定義它。

    例如:CUSTOMER_KEY2=\"val2,val2 val2\"

此語法密切模型設置 bash 環境變量的標準。

--datalake-formats

在 AWS Glue 3.0 及更新版本中支援。

指定要使用的資料湖架構。 AWS Glue 會將您指定之架構的必要JAR檔案新增至classpath。如需詳細資訊,請參閱將資料湖架構與 AWS Glue ETL 任務搭配使用

您可以指定以下一或多個值,以逗號分隔:

  • hudi

  • delta

  • iceberg

例如,傳遞下列引數來指定所有三個架構。

'--datalake-formats': 'hudi,delta,iceberg'
--disable-proxy-v2

停用服務代理以允許對 Amazon S3 的 AWS 服務呼叫 CloudWatch,以及透過您的指令碼產生的 AWS Glue VPC。如需詳細資訊,請參閱設定通 AWS 話以通過 VPC. 若要停用服務代理,請將此參數的值設定為 true

--enable-auto-scaling

將此值設定為 true 時,開啟自動擴展和按每名工作者計費。

--enable-continuous-cloudwatch-log

啟用 AWS Glue 工作的即時連續記錄。您可以檢視即時 Apache 星火工作記錄中 CloudWatch。

--enable-continuous-log-filter

當您建立或編輯已啟用持續記錄的任務時,指定標準篩選條件 (true) 或無篩選條件 (false)。選擇標準的過濾器梅干出非有用的 Apache 星火驅動程序/執行程序和 Apache 的 Hadoop 心跳日誌消息。YARN選擇無篩選條件可讓您獲得所有日誌訊息。

--enable-glue-datacatalog

可讓您使用 AWS Glue 資料目錄做為 Apache 星火蜂巢中繼存放區。若要啟用此功能,請將此值設定為 true

--enable-job-insights

使用 AWS Glue 工作執行深入解析,啟用額外的錯誤分析 如需詳細資訊,請參閱 使用 AWS Glue 任務執行見解進行監控。依預設,此值設定為 true 並啟用任務執行見解。

此選項適用於 AWS Glue 版本 2.0 和 3.0。

--enable-metrics

針對此任務執行啟用任務分析的指標集合。這些指標可在 AWS Glue 主控台和 Amazon 主控 CloudWatch 台上取得。此參數的值不相關。若要啟用此功能,您可為此參數提供任何值,但為了確保清晰明瞭,建議您使用 true。若要停用此功能,請從任務組態中移除此參數。

--enable-observability-metrics

在 AWS Glue 主控台和主控台下的「Job 執行監視」頁面上,啟用一組「可觀察性」指標,以產生每個工作執行中正在發生的情況的 Amazon CloudWatch 見解。若要啟用此功能,請將此參數值設定為 true。若要停用此功能,請將其設為 false 或從作業組態中移除此參數。

--enable-rename-algorithm-v2

將EMRFS重新命名演算法版本設定為版本 2。當 Spark 任務使用動態分割區覆寫模式時,有可能會建立重複的分割區。例如,您最終可能會得到一個重複的分割區,例如 s3://bucket/table/location/p1=1/p1=1。在這裡,P1 是被覆寫的分割區。重新命名演算法版本 2 會修正此問題。

此選項僅適用於 AWS Glue 1.0 版本。

--enable-s3-parquet-optimized-committer

啟用 EMRFS S3 最佳化的提交程式,以將鑲木地板資料寫入 Amazon S3。建立或更新 Glue 工作時,您可以透過 AWS Glue 主控台提供參數/值組。 AWS 將值設為 true 以啟用遞交者。根據預設,在 AWS Glue 3.0 中會開啟此旗標,並在 Glu AWS e 2.0 中關閉此旗標。

如需詳細資訊,請參閱使用 EMRFS S3 最佳化的提交者。

--enable-spark-ui

設定為時true,開啟此功能以使用 Spark UI 監視和偵錯 AWS Glue ETL 工作。

--executor-cores

可以平行執行的 Spark 任務數量。 AWS Glue 3.0 以上支援此選項。該值不應超過工作站類型 vCPUs 上數量的 2 倍,即 8 上G.1X,16 上G.2X,32 開啟G.4X和 64 上G.8X。更新此組態時,您應該小心,因為這可能會影響工作效能,因為增加任務平行性會導致記憶體、磁碟壓力,以及可能會限制來源和目標系統 (例如:它會在 Amazon RDS 上造成更多的同時連線)。

--extra-files

Amazon S3 路徑指向其他檔案,例如 AWS Glue 會在執行之前複製到驅動程式節點上指令碼工作目錄的組態檔。多個值必須是以英文逗號 (,) 分隔的完整路徑。僅支援個別檔案路徑,而非目錄路徑。Python Shell 任務類型不支援此選項。

--extra-jars

Amazon S3 路徑會指向 AWS Glue 複製到驅動程式和執行程式的其他檔案。 AWS Glue 還會在執行腳本之前將這些文件添加到 Java 類路徑中。多個值必須是以英文逗號 (,) 分隔的完整路徑。擴展不需要 .jar

--extra-py-files

在執行指令碼之前,Amazon S3 會路徑指向 AWS Glue 新增至驅動程式節點上的 Python 路徑的其他 Python 模組。多個值必須是以英文逗號 (,) 分隔的完整路徑。僅支援個別檔案路徑,而非目錄路徑。

--job-bookmark-option

控制任務書籤的行為。可設定以下選項值:

‑‑job‑bookmark‑option 值 描述
job-bookmark-enable 追蹤先前已處理的資料。當任務執行時,從最後一個檢查點開始處理新資料。
job-bookmark-disable 一律處理整個資料集。您需負責管理之前任務執行的輸出。
job-bookmark-pause 處理上次成功執行後的遞增資料,或由下列子選項識別範圍內的資料,而不更新最後一個書籤的狀態。您需負責管理之前任務執行的輸出。兩個子選項如下:
  • job-bookmark-from <from-value> 是執行 ID,它表示所有被處理,直到最後一次成功執行之前,包括指定的執行 ID 的輸入。對應的輸入會被忽略。

  • job-bookmark-to <to-value> 是執行 ID,它表示所有被處理,直到最後一次成功執行之前,包括指定的執行 ID 的輸入。由 <from-value> 識別的輸入以外的對應的輸入由該任務處理。此輸入後的任何輸入也會排除而不進行處理。

指定此選項組時,不會更新任務書籤狀態。

子選項是選擇性的。但是,使用時必須提供兩個子選項。

例如,若要啟用任務書籤,請傳遞以下參數:

'--job-bookmark-option': 'job-bookmark-enable'
--job-language

指令碼程式設計語言。此值必須為 scalapython。如果此參數不存在,則預設值為 python

--python-modules-installer-option

使用 --additional-python-modules 安裝模組時,針對要傳送到 pip3 的選項給予定義的純文字字串。以您在命令列中執行的相同方式提供選項,以空格分隔各項,並在前方加上英文破折號。如需使用方面的詳細資訊,請參閱 使用 pip 在 AWS Glue 2.0+ 中安裝其他 Python 模組

注意

當您使用 Python 3.9 時, AWS Glue 合工作不支援這個選項。

--scriptLocation

您的ETL指令碼所在的亞馬遜簡單儲存服務 (Amazon S3) 位置 (在表單中s3://path/to/my/script.py)。此參數會覆寫在 JobCommand 物件中設定的指令碼位置。

--spark-event-logs-path

指定 Amazon S3 路徑。使用 Spark UI 監控功能時, AWS Glue 會每隔 30 秒將此 Amazon S3 路徑的 Spark 事件日誌排清到儲存貯體,該儲存貯體可用作存放 Spark UI 事件的暫時目錄。

--TempDir

指定儲存貯體的 Amazon S3 路徑做為任務的暫時目錄。

例如,若要設定臨時目錄,請傳遞以下引數:

'--TempDir': 's3-path-to-directory'
注意

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

--use-postgres-driver

將此值設定為時true,會優先考慮類別路徑中的 Postgres JDBC 驅動程式,以避免與 Amazon Redshift 驅動程式發生衝突。JDBC此選項僅適用於 AWS Glue 2.0 版本。

--user-jars-first

將此值設定為時true,會優先處理類別路徑中客戶的額外JAR檔案。此選項僅適用於 AWS Glue 2.0 版或更新版本。

--conf

控制 Spark 組態參數。適用於進階使用案例。

--encryption-type

舊參數。應使用安全組態設定對應的行為。如需有關安全組態的詳細資訊,請參閱 對 AWS Glue 寫入的資料加密

AWS Glue 在內部使用以下參數,您不應該使用它們:

  • --debug— 內部 AWS Glue。請勿設定。

  • --mode— 內部 AWS Glue。請勿設定。

  • --JOB_NAME— 內部 AWS Glue。請勿設定。

  • --endpoint— 內部 AWS Glue。請勿設定。

AWS Glue 支援使用 Python site 模組啟動載入環境,sitecustomize以執行特定於網站的自訂項目。建議僅針對進階使用案例啟動載入您自己的初始化功能,並在 Glue 4.0 上以最大努力為基礎提供支援。 AWS

環境變數字首 GLUE_CUSTOMER 會保留供客戶使用。