

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de S3 Select Pushdown con Presto para mejorar el rendimiento
<a name="emr-presto-s3select"></a>

**importante**  
Amazon S3 Select ya no está disponible para los nuevos clientes. Los clientes actuales de Amazon S3 Select pueden seguir utilizando la característica de la forma habitual. [Más información](https://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/) 

Con la versión 5.18.0 y posteriores de Amazon EMR, puede usar [S3 Select](https://aws.amazon.com/blogs/aws/s3-glacier-select/) Pushdown con Presto en Amazon EMR. Esta característica permite a Presto “delegar” el trabajo de computación de las operaciones de proyección (por ejemplo, `SELECT`) y de las operaciones de predicado (por ejemplo, `WHERE`) en Amazon S3. Esto permite que las consultas recuperen únicamente los datos necesarios desde Amazon S3, lo que puede mejorar el rendimiento y reducir la cantidad de datos transferidos entre Amazon EMR y Amazon S3 en algunas aplicaciones.

## ¿Es S3 Select Pushdown adecuado para mi aplicación?
<a name="emr-presto-s3select-apps"></a>

Le recomendamos que realice un análisis comparativo sus aplicaciones con y sin S3 Select Pushdown para ver si su uso puede ser adecuado para su aplicación.

Utilice las siguientes directrices para determinar si la aplicación es candidata a utilizar S3 Select:
+ La consulta filtra más de la mitad del conjunto de datos original.
+ Los predicados del filtro de consulta utilizan columnas que tienen un tipo de datos compatible con Presto y con S3 Select. Los tipos de datos de marca de tiempo, real y doble no son compatibles con S3 Select Pushdown. Le recomendamos que utilice el tipo de datos decimal para los datos numéricos. Para obtener más información acerca de los tipos de datos compatibles con S3 Select, consulte [Tipos de datos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-data-types.html) en la *Guía del usuario de Amazon Simple Storage Service*.
+ La conexión de red entre Amazon S3 y el clúster de Amazon EMR tiene una buena velocidad de transferencia y ancho de banda disponible. Amazon S3 no comprime las respuestas HTTP, por lo que es probable que el tamaño de la respuesta aumente en el caso de los archivos de entrada comprimidos.

## Consideraciones y limitaciones
<a name="emr-presto-s3select-considerations"></a>
+ Solo se admiten los objetos almacenados en formato CSV. Los objetos se pueden estar sin comprimir o comprimidos con gzip o bzip2.
+ No se admite la propiedad `AllowQuotedRecordDelimiters`. Si se especifica esta propiedad, se producirá un error en la consulta.
+ No se admiten el cifrado del servidor de Amazon S3 con claves de cifrado proporcionadas por el cliente (SSE-C) ni el cifrado del cliente. 
+ S3 Select Pushdown no sustituye al uso de formatos de archivo comprimido o en columnas como ORC o Parquet.
+ Amazon S3 Select no admite consultas entre regiones para Presto y Trino.

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

Para habilitar S3 Select Pushdown para PrestoDB en Amazon EMR, utilice la clasificación de configuración `presto-connector-hive` para establecer `hive.s3select-pushdown.enabled` en `true`, tal y como se muestra en el siguiente ejemplo. Para obtener más información, consulte [Configuración de aplicaciones](emr-configure-apps.md). El valor de hive.s3select-pushdown.max-connections también se debe establecer. Para la mayoría de las aplicaciones, la configuración predeterminada, `500`, debería ser suficiente. Para obtener más información, consulte [Descripción y ajuste de hive.s3select-pushdown.max-connections](#emr-presto-s3select-max) más abajo.

Para PrestoSQL en las versiones 6.1.0 a 6.3.0 de EMR, sustituya `presto-connector-hive` en el siguiente ejemplo por `prestosql-connector-hive`.

Las versiones 6.4.0 y posteriores de Amazon EMR utilizan el nuevo nombre Trino en lugar de PrestoSQL. Si usa Trino, sustituya `presto-connector-hive` en el ejemplo siguiente por `trino-connector-hive`

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

### Descripción y ajuste de hive.s3select-pushdown.max-connections
<a name="emr-presto-s3select-max"></a>

De forma predeterminada, Presto utiliza EMRFS como sistema de archivos. El ajuste `fs.s3.maxConnections` de la clasificación de configuración `emrfs-site` especifica el número máximo permitido de conexiones de cliente a Amazon S3 a través de EMRFS para Presto. El valor predeterminado es 500. S3 Select Pushdown no utiliza EMRFS al obtener acceso a Amazon S3 para las operaciones de predicado. En este caso, el valor de `hive.s3select-pushdown.max-connections` determina el número máximo de conexiones de cliente permitidas para dichas operaciones desde los nodos de trabajo. Sin embargo, para todas las solicitudes a Amazon S3 iniciadas por Presto y que no se delegan, como, por ejemplo, las operaciones GET, se sigue teniendo en cuenta el valor de `fs.s3.maxConnections`.

Si la aplicación muestra el error "Timeout waiting for connection from pool" (Tiempo de espera esperando la conexión desde el grupo), incremente los valores de `hive.s3select-pushdown.max-connections` y `fs.s3.maxConnections`.