

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

# 使用適用於 Apache Spark 的資料來源連接器
<a name="connectors-spark"></a>

有些 Athena 資料來源連接器可做為 Spark DSV2 連接器使用。Spark DSV2 連接器名稱具有 `-dsv2` 字尾 (例如，`athena-dynamodb-dsv2`)。

以下是目前可用的 DSV2 連接器、其 Spark `.format()` 類別名稱，以及對應的 Amazon Athena 聯合查詢文件的連結：


| DSV2 連接器 | Spark .format() 類別名稱 | 文件 | 
| --- | --- | --- | 
| athena-cloudwatch-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.CloudwatchTableProvider | [CloudWatch](connectors-cloudwatch.md) | 
| athena-cloudwatch-metrics-dsv2 | com.amazonaws.athena.connectors.dsv2.cloudwatch.metrics.CloudwatchMetricsTableProvider | [CloudWatch 指標](connectors-cwmetrics.md) | 
| athena-aws-cmdb-dsv2 | com.amazonaws.athena.connectors.dsv2.aws.cmdb.AwsCmdbTableProvider | [CMDB](connectors-cmdb.md) | 
| athena-dynamodb-dsv2 | com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider | [DynamoDB](connectors-dynamodb.md) | 

若要下載 DSV2 連接器的 `.jar` 檔案，請造訪 [Amazon Athena Query Federation DSV2](https://github.com/awslabs/aws-athena-query-federation-dsv2) GitHub 頁面，並參閱**發行**、**發行 {{<版本>}}**、**資產**章節。

## 將 jar 指定至 Spark
<a name="connectors-spark-specifying-the-jar-to-spark"></a>

若要搭配使用 Athena DSV2 連接器與 Spark，請將連接器的 `.jar` 檔案提交至您正在使用的 Spark 環境。下列各節說明了特定情況。

### Athena for Spark
<a name="connectors-spark-ate"></a>

如需有關新增自訂 `.jar` 檔案和自訂組態至 Amazon Athena for Apache Spark 的資訊，請參閱 [使用 Spark 屬性指定自訂組態](notebooks-spark-custom-jar-cfg.md)。

### General Spark
<a name="connectors-spark-general"></a>

若要將連接器 `.jar` 檔案傳遞給 Spark，請使用 `spark-submit` 命令並在 `--jars` 選項中指定 `.jar` 檔案，如下列範例所示：

```
spark-submit \ 
  --deploy-mode cluster \ 
  --jars https://github.com/awslabs/aws-athena-query-federation-dsv2/releases/download/{{some_version}}/athena-dynamodb-dsv2-{{some_version}}.jar
```

### Amazon EMR Spark
<a name="connectors-spark-emr"></a>

為在 Amazon EMR 上使用 `--jars` 參數執行 `spark-submit` 命令，您必須新增步驟至您的 Amazon EMR Spark 叢集。如需有關如何使用 Amazon EMR 上的 `spark-submit`，請參閱《*Amazon EMR 版本指南*》中的[新增 Spark 步驟](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html)。

### AWS Glue ETL Spark
<a name="connectors-spark-glue-etl"></a>

對於 AWS Glue ETL，您可以將`.jar`檔案的 GitHub.com URL 傳遞至 `aws glue start-job-run`命令的`--extra-jars`引數。 AWS Glue 文件會將 `--extra-jars` 參數描述為採用 Amazon S3 路徑，但 參數也可以採用 HTTPS URL。如需詳細資訊，請參閱《*AWS Glue 開發人員指南*》中的[任務參數參考](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html#w5aac32c13c11)。

## 在 Spark 上查詢連接器
<a name="connectors-spark-querying-the-connector"></a>

若要在 Apache Spark 上提交您現有的 Athena 聯合查詢的等式，請使用 `spark.sql()` 函數。例如，假設您想要在 Apache Spark 上使用如下所示的 Athena 查詢。

```
SELECT somecola, somecolb, somecolc 
FROM ddb_datasource.some_schema_or_glue_database.some_ddb_or_glue_table 
WHERE somecola > 1
```

若要使用 Amazon Athena DynamoDB DSV2 連接器在 Spark 上執行相同的查詢，請使用下列程式碼：

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load()) 
 
dynamoDf.createOrReplaceTempView("ddb_spark_table") 
 
spark.sql(''' 
SELECT somecola, somecolb, somecolc 
FROM ddb_spark_table 
WHERE somecola > 1 
''')
```

## 指定參數
<a name="connectors-spark-parameters"></a>

Athena 資料來源連接器的 DSV2 版本使用的參數，與對應 Athena 資料來源連接器使用的參數相同。如需參數資訊，請參閱對應 Athena 資料來源連接器的文件。

在 PySpark 程式碼中，使用下列語法來設定您的參數。

```
spark.read.option("athena.connectors.conf.{{parameter}}", "{{value}}")
```

例如，下列程式碼會將 Amazon Athena DynamoDB 連接器 `disable_projection_and_casing` 參數設定為 `always`。

```
dynamoDf = (spark.read 
    .option("athena.connectors.schema", "some_schema_or_glue_database") 
    .option("athena.connectors.table", "some_ddb_or_glue_table") 
    .option("athena.connectors.conf.disable_projection_and_casing", "always") 
    .format("com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider") 
    .load())
```