

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

# 在 Glue AWS 任務中使用任務參數
<a name="aws-glue-programming-etl-glue-arguments"></a>

建立 AWS Glue 任務時，您可以設定一些標準欄位，例如 `Role`和 `WorkerType`。您可以透過 `Argument` 欄位 (主控台中的**任務參數**) 提供其他組態資訊。在這些欄位中，您可以為 AWS Glue 任務提供本主題中列出的引數 （參數）。

 如需 AWS Glue 任務 API 的詳細資訊，請參閱 [任務](aws-glue-api-jobs-job.md)。

**注意**  
 任務引數的大小上限為 260 KB。如果引數大小大於 260 KB，驗證檢查將引發錯誤。



## 設定任務參數
<a name="w2aac37c11b8c11"></a>

您可以透過主控台在 **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"'
```

## 存取任務參數
<a name="w2aac37c11b8c13"></a>

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

**在 Python 中：**

在 Python 任務中，我們提供了一個名為 `getResolvedParameters` 的函數。如需詳細資訊，請參閱[使用 `getResolvedOptions` 存取參數](aws-glue-api-crawler-pyspark-extensions-get-resolved-options.md)。任務參數可在 `sys.argv` 變數中使用。

**在 Scala 中：**

在 Scala 任務中，我們提供了一個名為 `GlueArgParser` 的物件。如需詳細資訊，請參閱[AWS Glue Scala GlueArgParser API](glue-etl-scala-apis-glue-util-glueargparser.md)。任務參數可在 `sysArgs` 變數中使用。

## 任務參數參考
<a name="job-parameter-reference"></a>

**AWS Glue 會辨識下列引數名稱，您可以用來設定任務和任務執行的指令碼環境：**

**`--additional-python-modules`**  
 以逗號分隔的清單，代表要安裝的一組 Python 套件。您可以從 PyPI 安裝套件或提供自訂發行版本。PyPI 套件項目的格式為 `{{package}}=={{version}}`，其中包含 PyPI 名稱和目標套件的版本。自訂發行版本項目是發行版本的 S3 路徑。  
項目使用 Python 版本比對來比對套件和版本。這意味著您將需要使用兩個等號，例如 `==`。還有其他版本的比對運算子，如需更多資訊，請參閱 [PEP 440](https://peps.python.org/pep-0440/#version-matching)。  
若要將模組安裝選項傳遞給 `pip3`，請使用 [--python-modules-installer-option](#python-modules-installer-option) 參數。

**`--auto-scale-within-microbatch`**  
預設值為 true。此參數只能用於 Glue AWS 串流任務，其會處理一系列微批次中的串流資料，且必須啟用自動擴展。將此值設定為 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`**  
這些參數會分別針對每個工作者 (驅動程式或執行器) 在作業系統上設定環境變數。您可以在 Glue AWS 上建置平台和自訂架構時使用這些參數，讓使用者在上面撰寫任務。啟用這兩個旗標可讓您分別在驅動程式和執行器上設定不同的環境變數，而不必在任務指令碼本身中注入相同邏輯。  
**範例使用方式**  
以下是使用這些參數的範例：

```
"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"",
"—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"
```
在任務執行引數中設定這些參數相當於執行下列命令：  
在驅動程式中：  
+ export CUSTOMER\_KEY1=VAL1
+ export CUSTOMER\_KEY2="val2,val2 val2"
在執行器中：  
+ export CUSTOMER\_KEY3=VAL3
然後，在任務指令碼本身中，您可以使用 `os.environ.get("CUSTOMER_KEY1")` 或 `System.getenv("CUSTOMER_KEY1")` 擷取環境變數。  
**強制執行的語法**  
定義環境變數時，遵循下列標準：
+ 每個金鑰都必須具有 `CUSTOMER_ prefix`。

  例如：對於 `"CUSTOMER_KEY3=VAL3,KEY4=VAL4"`，`KEY4=VAL4` 將被忽略且未設定。
+ 每個金鑰和值對都必須以單一逗號表示。

  例如：`"CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"`
+ 如果「值」有空格或逗號，則必須在引號內定義。

  例如：`CUSTOMER_KEY2=\"val2,val2 val2\"`
此語法緊密模擬設定 bash 環境變數的標準。

**`--datalake-formats` **  
Glue 3.0 AWS 及更新版本支援。  
指定要使用的資料湖架構。 AWS Glue 會將您指定的架構所需的 JAR 檔案新增至 `classpath`。如需詳細資訊，請參閱[搭配 AWS Glue ETL 任務使用資料湖架構](aws-glue-programming-etl-datalake-native-frameworks.md)。  
您可以指定以下一或多個值，以逗號分隔：  
+ `hudi`
+ `delta`
+ `iceberg`
例如，傳遞下列引數來指定所有三個架構。  

```
'--datalake-formats': 'hudi,delta,iceberg'
```

**`--disable-proxy-v2`**  
 停用服務代理，以允許透過 VPC 對來自指令碼的 Amazon S3、CloudWatch 和 AWS Glue 進行 AWS 服務呼叫。如需詳細資訊，請參閱[設定 AWS 呼叫通過您的 VPC](https://docs.aws.amazon.com/glue/latest/dg/connection-VPC-disable-proxy.html)。若要停用服務代理，請將此參數的值設定為 `true`。

**`--enable-auto-scaling`**  
將此值設定為 `true` 時，開啟自動擴展和按每名工作者計費。

**`--enable-continuous-cloudwatch-log`**  
啟用 Glue AWS 任務的即時連續記錄。您可以在 CloudWatch 中檢視即時 Apache Spark 任務日誌。

**`--enable-continuous-log-filter`**  
當您建立或編輯已啟用持續記錄的任務時，指定標準篩選條件 (`true`) 或無篩選條件 (`false`)。選擇標準篩選條件可剔除無用的 Apache Spark 驅動程式/執行器，以及 Apache Hadoop YARN 活動訊號日誌訊息。選擇無篩選條件可讓您獲得所有日誌訊息。

**`--enable-glue-datacatalog`**  
可讓您使用 AWS Glue Data Catalog 做為 Apache Spark Hive 中繼存放區。若要啟用此功能，請將此值設定為 `true`。

**`--enable-job-insights`**  
使用 Glue AWS 任務執行洞見啟用額外的錯誤分析監控。如需詳細資訊，請參閱[使用 AWS Glue 任務執行洞察進行監控](monitor-job-insights.md)。依預設，此值設定為 `true` 並啟用任務執行見解。  
此選項適用於 AWS Glue 2.0 和 3.0 版。

**`--enable-lakeformation-fine-grained-access`**  
啟用 Glue AWS 任務的精細存取控制。如需詳細資訊，請參閱[搭配 AWS 使用 Glue AWS Lake Formation 進行精細存取控制](security-lf-enable.md)。

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

**`--enable-observability-metrics`**  
 啟用一組可觀測性指標，以針對 Glue AWS 主控台和 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 最佳化遞交者，以將 Parquet 資料寫入 Amazon S3。您可以在建立或更新 AWS Glue 任務時，透過 Glue AWS 主控台提供參數/值對。將值設為 **true** 以啟用遞交者。根據預設， 標記會在 AWS Glue 3.0 中開啟，並在 AWS Glue 2.0 中關閉。  
如需詳細資訊，請參閱[使用 EMRFS S3 最佳化遞交者](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-optimized-committer.html)。

**`--enable-spark-ui`**  
設定為 時`true`，開啟 功能以使用 Spark UI 來監控和偵錯 AWS Glue ETL 任務。

**`--executor-cores`**  
可以平行執行的 Spark 任務數量。Glue AWS 3.0\+ 支援此選項。該值不應超過工作者類型上 vCPU 數目的 2 倍，即分別為 `G.1X` 上 8 個、`G.2X` 上 16 個、`G.4X` 上 32 個、`G.8X` 上 64 個、`G.12X` 上 96 個、`G.16X` 上 128 個和 `R.1X` 上 8 個、`R.2X` 上 16 個、`R.4X` 上 32 個、`R.8X` 上 64 個。更新此組態時應小心，這可能會影響任務效能，因為增加任務平行處理會導致記憶體和磁碟壓力，並且可能會對來源和目標系統限流 (例如：它會在 Amazon RDS 上造成更多並行連線)。

**`--extra-files`**  
組態檔案等其他檔案的 Amazon S3 路徑；在系統執行您的指令碼前， AWS Glue 即會將其複製到驅動程式節點上指令碼的工作型錄。多個值必須是以英文逗號 (`,`) 分隔的完整路徑。值可以是個別檔案或型錄位置。Python Shell 任務類型不支援此選項。

**`--extra-jars`**  
 AWS Glue 複製到驅動程式和執行器的其他檔案的 Amazon S3 路徑。在執行指令碼之前， AWS Glue 也會將這些檔案新增至 Java classpath。多個值必須是以英文逗號 (`,`) 分隔的完整路徑。延伸模組不需要是 `.jar`

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

**`--job-bookmark-option`**  
控制任務書籤的行為。可設定以下選項值：    
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
例如，若要啟用任務書籤，請傳遞以下參數：  

```
'--job-bookmark-option': 'job-bookmark-enable'
```

**`--job-language`**  
指令碼程式設計語言。此值必須為 `scala` 或 `python`。如果此參數不存在，則預設值為 `python`。

**`--python-modules-installer-option`**  
使用 [--additional-python-modules](#additional-python-modules) 安裝模組時，針對要傳送到 `pip3` 的選項給予定義的純文字字串。以您在命令列中執行的相同方式提供選項，以空格分隔各項，並在前方加上英文破折號。如需使用方面的詳細資訊，請參閱 [在 AWS Glue 2.0 或更新版本中使用 pip 安裝其他 Python 模組](aws-glue-programming-python-libraries.md#addl-python-modules-support)。  
當您使用 Python AWS 3.9 時，Glue 任務不支援此選項。

**`--scriptLocation`**  
ETL 指令碼所在的 Amazon Simple Storage Service (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`，即會在 classpath 中優先考慮客戶的額外 JAR 檔案。此選項僅適用於 AWS Glue 2.0 版或更新版本。

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

**`--encryption-type`**  
舊參數。應使用安全組態設定對應的行為。如需有關安全組態的詳細資訊，請參閱 [加密 寫入的資料 AWS Glue](encryption-security-configuration.md)。

AWS Glue 會在內部使用下列引數，您不應該使用它們：
+ `--debug` — Glue AWS 內部。請勿設定。
+ `--mode` — Glue AWS 內部。請勿設定。
+ `--JOB_NAME` — Glue AWS 內部。請勿設定。
+ `--endpoint` — Glue AWS 內部。請勿設定。



## 
<a name="w2aac37c11b8c17"></a>

 AWS Glue 支援使用 Python `site`模組引導環境`sitecustomize`，以執行網站特定的自訂。建議僅為進階使用案例啟動您自己的初始化函數，並在 Glue 4.0 AWS 上盡力支援。

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