

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

# 透過 StartJobRun API 執行 Spark SQL 指令碼
<a name="emr-eks-jobs-spark-sql-parameters"></a>

Amazon EMR on EKS 6.7.0 版及更高版本包含 Spark SQL 作業驅動程式，以便可以透過 `StartJobRun` API 來執行 Spark SQL 指令碼。您可以提供 SQL 進入點檔案，以使用 `StartJobRun` API 在 Amazon EMR on EKS 上執行 Spark SQL 查詢，而無需對現有的 Spark SQL 指令碼進行任何修改。下表列出了 Spark SQL 作業透過 StartJobRun API 支援的 Spark 參數。

可以從下面的 Spark 參數中選擇，以傳送到 Spark SQL 作業。使用這些參數來覆寫預設的 Spark 屬性。


| 選項 | Description | 
| --- | --- | 
|  --name NAME  | Application Name (應用程式名稱) | 
| --jars JARS | 驅動程式和執行程式 classpath 隨附的以逗號分隔的 jar 清單。 | 
| --packages | 驅動程式和執行程式 classpath 中包含以逗號分隔的 jar 的 maven 座標清單。 | 
| --exclude-packages | 以逗號分隔的 groupId:artifactId 清單，在解決 –packages 中提供的相依性時排除，以避免相依性衝突。 | 
| --repositories | 以逗號分隔的其他遠端儲存庫清單，用於搜尋 –packages 提供的 maven 座標。 | 
| --files FILES | 要放置在每個執行程式的工作目錄中的以逗號分隔的檔案清單。 | 
| --conf PROP=VALUE | Spark 組態屬性。 | 
| --properties-file FILE | 要從中載入額外屬性的檔案路徑。 | 
| --driver-memory MEM | 驅動程式的記憶體。預設值為 1024MB。 | 
| --driver-java-options | 用於傳遞給驅動程式的額外 Java 選項。 | 
| --driver-library-path | 用於傳遞給驅動程式的額外程式庫路徑條目。 | 
| --driver-class-path | 用於傳遞給驅動程式的額外 classpath 條目。 | 
| --executor-memory MEM | 每個執行程式的記憶體。預設值為 1 GB。 | 
| --driver-cores NUM | 驅動程式使用的核心數目。 | 
| --total-executor-cores NUM | 所有執行程式的核心總數。 | 
| --executor-cores NUM | 每個執行程式使用的核心數量。 | 
| --num-executors NUM | 要啟動的執行程式數量。 | 
| -hivevar <key=value> | 套用於 Hive 命令的變數替換，例如，-hivevar A=B | 
| -hiveconf <property=value> | 用於指定屬性的值。 | 

若為 Spark SQL 作業，請建立 start-job-run-request.json 檔案，並指定作業執行所需的參數，如下列範例所示：

```
{
  "name": "myjob", 
  "virtualClusterId": "123456",  
  "executionRoleArn": "iam_role_name_for_job_execution", 
  "releaseLabel": "emr-6.7.0-latest", 
  "jobDriver": {
    "sparkSqlJobDriver": {
      "entryPoint": "entryPoint_location",
       "sparkSqlParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"
    }
  }, 
  "configurationOverrides": {
    "applicationConfiguration": [
      {
        "classification": "spark-defaults", 
        "properties": {
          "spark.driver.memory":"2G"
         }
      }
    ], 
    "monitoringConfiguration": {
      "persistentAppUI": "ENABLED", 
      "cloudWatchMonitoringConfiguration": {
        "logGroupName": "my_log_group", 
        "logStreamNamePrefix": "log_stream_prefix"
      }, 
      "s3MonitoringConfiguration": {
        "logUri": "s3://my_s3_log_location"
      }
    }
  }
}
```