本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AWS Glue 工作中使用工作參數
建立 AWS Glue 工作時,您可以設定一些標準欄位,例如Role
和WorkerType
。您可以透過 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 套件項目的格式為
,其中包含 PyPI 名稱和目標套件的版本。自訂發行版本項目是發行版本的 S3 路徑。package
==version
項目使用 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
-
指令碼程式設計語言。此值必須為
scala
或python
。如果此參數不存在,則預設值為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
會保留供客戶使用。