

# Uso de conectores de orígenes de datos de Athena para Apache Spark
<a name="connectors-spark"></a>

Algunos conectores de orígenes de datos de Athena están disponibles como conectores DSV2 de Spark. Los nombres de los conectores DSV2 de Spark tienen un sufijo `-dsv2` (por ejemplo, `athena-dynamodb-dsv2`).

A continuación, se muestran los conectores DSV2 disponibles actualmente, su nombre de clase `.format()` de Spark y los enlaces a la documentación correspondiente de Amazon Athena Federated Query:


| Conector DSV2 | Nombre de clase .format() de Spark | Documentación | 
| --- | --- | --- | 
| 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 | [Métricas de 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) | 

Para descargar archivos `.jar` para los conectores DSV2, visite la página de GitHub [Amazon Athena Query Federation DSV2](https://github.com/awslabs/aws-athena-query-federation-dsv2) y consulte la sección **Releases** (Versiones), **Release *<version>*** (Versión <version>), **Assets** (Activos).

## Especificación del archivo jar para Spark
<a name="connectors-spark-specifying-the-jar-to-spark"></a>

Para usar los conectores DSV2 de Athena con Spark, envíe el archivo `.jar` del conector al entorno de Spark que esté utilizando. En las siguientes secciones se describen casos específicos.

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

Para obtener información sobre cómo agregar archivos `.jar` personalizados y configuraciones personalizadas a Amazon Athena para Apache Spark, consulte [Uso de las propiedades de Spark para especificar una configuración personalizada](notebooks-spark-custom-jar-cfg.md).

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

Para pasar el archivo `.jar` del conector a Spark, utilice el comando `spark-submit` y especifique el archivo `.jar` en la opción `--jars`, como en el siguiente ejemplo:

```
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>

Para ejecutar un comando `spark-submit` con el parámetro `--jars` en Amazon EMR, debe agregar un paso a su clúster de Amazon EMR Spark. Para obtener más información sobre cómo usar `spark-submit` en Amazon EMR, consulte [Add a Spark step](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html) (Agregar un paso de Spark) en la *Guía de publicación de Amazon EMR*.

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

En el caso de ETL de AWS Glue, puede pasar la URL de GitHub.com del archivo `.jar` al argumento `--extra-jars` del comando `aws glue start-job-run`. En la documentación de AWS Glue, se describe que el parámetro `--extra-jars` toma una ruta de Amazon S3, pero el parámetro también puede tomar una URL HTTPS. Para obtener más información, consulte [Referencia de parámetros de trabajos](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html#w5aac32c13c11) en la *Guía para desarrolladores de AWS Glue*.

## Consulta del conector en Spark
<a name="connectors-spark-querying-the-connector"></a>

Para enviar el equivalente a su consulta federada de Athena existente en Apache Spark, use la función `spark.sql()`. Por ejemplo, supongamos que tiene la siguiente consulta de Athena que desea utilizar en Apache Spark.

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

Para realizar la misma consulta en Spark mediante el conector DynamoDB DSV2 de Amazon Athena, utilice el siguiente código:

```
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 
''')
```

## Especifique los parámetros de
<a name="connectors-spark-parameters"></a>

Las versiones DSV2 de los conectores de orígenes de datos de Athena utilizan los mismos parámetros que los conectores de orígenes de datos de Athena correspondientes. Para obtener información sobre los parámetros, consulte la documentación del conector de origen de datos de Athena correspondiente.

En su código de PySpark, use la siguiente sintaxis para configurar sus parámetros.

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

Por ejemplo, el siguiente código establece el parámetro `disable_projection_and_casing` del conector DynamoDB de Amazon Athena en `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())
```