

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar S3 Select Pushdown com o Presto para melhorar a performance
<a name="emr-presto-s3select"></a>

**Importante**  
O Amazon S3 Select não está mais disponível para novos clientes. Os clientes existentes do Amazon S3 Select podem continuar usando o recurso normalmente. [Saiba mais](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Com as versões 5.18.0 e posteriores do Amazon EMR, você pode usar [S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/) Pushdown com Presto no Amazon EMR. Esse atributo permite que o Presto “empurre” o trabalho de computação de operações de projeção (por exemplo, `SELECT`) e operações de predicado (por exemplo, `WHERE`) para o Amazon S3. Isso permite que as consultas recuperem apenas os dados necessários do Amazon S3, o que pode melhorar a performance e reduzir a quantidade de dados transferidos entre o Amazon EMR e o Amazon S3 em algumas aplicações.

## O S3 Select Pushdown é adequado para minha aplicação?
<a name="emr-presto-s3select-apps"></a>

Recomendamos que você avalie seus aplicativos com e sem o S3 Selecione Pushdown para ver se o uso pode ser adequado para o aplicativo.

Use as seguintes diretrizes para determinar se o seu aplicativo é adequado para o uso do S3 Select:
+ Sua consulta filtra mais de metade do conjunto de dados original.
+ Os predicados do filtro de consulta usam colunas que têm um tipo de dados compatível com o Presto e o S3 Select. Os tipos de dados real e duplo e o carimbo de data e hora não têm suporte no S3 Select Pushdown. É recomendável usar o tipo de dados decimal para dados numéricos. Para obter mais informações sobre tipos de dados compatíveis com o S3 Select, consulte [Tipos de dados](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-data-types.html) no *Guia do usuário do Amazon Simple Storage Service*.
+ Sua conexão de rede entre o Amazon S3 e o cluster do Amazon EMR tem boa velocidade de transferência e largura de banda disponível. O Amazon S3 não compacta respostas HTTP. Portanto, é provável que o tamanho da resposta aumente para arquivos de entrada compactados.

## Considerações e limitações
<a name="emr-presto-s3select-considerations"></a>
+ Somente objetos armazenados em formato CSV têm suporte. Os objetos podem ser descompactados ou compactados com gzip ou bzip2.
+ A propriedade `AllowQuotedRecordDelimiters` não é compatível. Se essa propriedade for especificada, a consulta falhará.
+ A criptografia do lado do servidor do Amazon S3 com chaves de criptografia fornecidas pelo cliente (SSE-C) e a criptografia do lado do cliente não são compatíveis. 
+ O S3 Select Pushdown não é um substituto para o uso de formatos de arquivo colunar ou compactado, como ORC ou Parquet.
+ O Amazon S3 Select não oferece suporte a consultas entre regiões para o Presto e o Trino.

## Habilitar o S3 Select Pushdown com o PrestoDB ou Trino
<a name="emr-presto-s3select-specify"></a>

Para habilitar o S3 Select Pushdown para Presto no Amazon EMR, use a classificação de configuração `presto-connector-hive` para definir `hive.s3select-pushdown.enabled` como `true`, conforme mostrado no exemplo a seguir. Para obter mais informações, consulte [Configurar aplicações](emr-configure-apps.md). O valor hive.s3select-pushdown.max-connections também deve ser definido. Para a maioria dos aplicativos, a configuração padrão de `{{500}}` deve ser adequada. Para obter mais informações, consulte [Noções básicas e ajuste do hive.s3select-pushdown.max-connections](#emr-presto-s3select-max) abaixo.

No PrestoSQL nas versões 6.1.0 a 6.3.0 do EMR, substitua `{{presto-connector-hive}}` no exemplo abaixo por `prestosql-connector-hive`.

As versões 6.4.0 e posteriores do Amazon EMR usam o novo nome Trino em vez de PrestoSQL. Se você usa o Trino, substitua `{{presto-connector-hive}}` no exemplo abaixo por `trino-connector-hive`

```
[
    {
        "classification": "{{presto-connector-hive}}",
        "properties": {
            "hive.s3select-pushdown.enabled": "true",
            "hive.s3select-pushdown.max-connections": "500"
        }
    }
]
```

### Noções básicas e ajuste do hive.s3select-pushdown.max-connections
<a name="emr-presto-s3select-max"></a>

Por padrão, o Presto usa o EMRFS como seu sistema de arquivos. A configuração `fs.s3.maxConnections` na classificação de configuração `emrfs-site` especifica o máximo permitido de conexões de cliente com o Amazon S3 por meio do EMRFS para Presto. Por padrão, é 500. O S3 Select Pushdown ignora o EMRFS ao acessar o Amazon S3 para operações de predicado. Nesse caso, o valor de `hive.s3select-pushdown.max-connections` determina o número máximo de conexões de cliente permitidas para essas operações de nós do operador. No entanto, quaisquer solicitações para o Amazon S3 que o Presto inicia que não são enviadas, como operações GET, continuam a ser regidas pelo valor de `fs.s3.maxConnections`.

Se o seu aplicativo tiver o erro "Tempo limite atingido em espera para conexão do grupo", aumente o valor de `hive.s3select-pushdown.max-connections` e `fs.s3.maxConnections`.