

# Trabalhar com conectores de fonte de dados do Athena para o Apache Spark
<a name="connectors-spark"></a>

Alguns conectores de fonte de dados do Athena estão disponíveis como conectores DSV2 do Spark. Os nomes dos conectores DSV2 do Spark têm um  sufixo `-dsv2` (por exemplo, `athena-dynamodb-dsv2`).

A seguir, os conectores DSV2 atualmente disponíveis, seu nome de classe do Spark `.format()` e os links para a documentação sobre consultas federadas do Amazon Athena correspondente:


| Conector DSV2 | Nome da classe do Spark .format() | Documentação | 
| --- | --- | --- | 
| 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 do CloudWatch](connectors-cwmetrics.md) | 
| atena-aws-cmdb-dsv2 | com.amazonaws.athena.connectors.dsv2.aws.cmdb.AwsCmdbTableProvider | [CMDB](connectors-cmdb.md) | 
| atena-dynamodb-dsv2 | com.amazonaws.athena.connectors.dsv2.dynamodb.DDBTableProvider | [DynamoDB](connectors-dynamodb.md) | 

Para baixar arquivos `.jar` para os conectores DSV2, visite a página [DSV2 da consulta federada do Amazon Athena](https://github.com/awslabs/aws-athena-query-federation-dsv2) no GitHub e veja a seção **Lançamentos**, **Lançamento {{<versão>}}**, **Ativos**.

## Especificar o jar para o Spark
<a name="connectors-spark-specifying-the-jar-to-spark"></a>

Para usar os conectores DSV2 do Athena com o Spark, você envia o arquivo `.jar` do conector para o ambiente do Spark que está usando. As seções a seguir descrevem casos específicos.

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

Para obter informações sobre como adicionar arquivos `.jar` personalizados e configurações personalizadas ao Amazon Athena para Apache Spark, consulte [Usar as propriedades do Spark para especificar uma configuração personalizada](notebooks-spark-custom-jar-cfg.md).

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

Para passar arquivo `.jar` do conector para o Spark, use o comando `spark-submit` e especifique o Aarquivo `.jar` na opção `--jars`, como no seguinte exemplo:

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

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

Para executar um comando `spark-submit` com o  parâmetro `--jars` no Amazon EMR, você deve adicionar uma etapa ao cluster do Spark no Amazon. Para obter detalhes sobre como usar `spark-submit` no Amazon EMR, consulte [Adicionar uma etapa do Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html) no *Guia de lançamento do Amazon EMR.*

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

Para ETL do AWS Glue, você pode passar a URL GitHub.com do arquivo `.jar`  para o argumento `--extra-jars` do comando `aws glue start-job-run`. A documentação do AWS Glue descreve o parâmetro `--extra-jars` seguindo um caminho do Amazon S3, mas o parâmetro também pode usar uma URL HTTPS. Para obter mais informações, consulte [Referência de parâmetros de trabalho](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html#w5aac32c13c11) no *Guia do desenvolvedor do AWS Glue*.

## Consultar o conector no Spark
<a name="connectors-spark-querying-the-connector"></a>

Para enviar o equivalente à sua consulta federada existente do Athena no Apache Spark, use a função `spark.sql()`. Por exemplo, suponhamos que você tenha a consulta do Athena a seguir e deseje usar no Apache Spark.

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

Para realizar a mesma consulta no Spark usando o conector DSV2 do Amazon Athena para DynamoDB, use o seguinte 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 
''')
```

## Especificar parâmetros do
<a name="connectors-spark-parameters"></a>

As versões DSV2 dos conectores de fonte de dados Athena usam os mesmos parâmetros dos conectores de fonte de dados Athena correspondentes. Para obter informações sobre parâmetros, consulte a documentação do conector de fonte de dados do Athena correspondente.

No código do PySpark, use a sintaxe a seguir para configurar os parâmetros.

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

Por exemplo, o código a seguir define o parâmetro `disable_projection_and_casing` do conector Amazon Athena para o DynamoDB como `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())
```