Filtrado y recuperación de datos con Amazon S3 Select - Amazon Simple Storage Service

Filtrado y recuperación de datos con Amazon S3 Select

Amazon S3 Select le permite utilizar instrucciones de lenguaje de consulta estructurada (SQL) para filtrar el contenido de los objetos de Amazon S3 y recuperar exactamente el subconjunto de datos que necesita. Si utiliza Amazon S3 Select para filtrar estos datos, puede reducir la cantidad de datos que Amazon S3 transfiere, lo que reduce también los costos y la latencia para recuperarlos.

Amazon S3 Select funciona con objetos almacenados en formato CSV, JSON o Apache Parquet. También funciona con objetos comprimidos con GZIP o BZIP2 (solo para objetos CSV y JSON), así como con objetos cifrados del lado del servidor. Puede especificar el formato de los resultados como CSV o JSON, y también puede determinar cómo se delimitan los registros en los resultados.

Las expresiones SQL se pasan a Amazon S3 en la solicitud. Amazon S3 Select es compatible con un subconjunto de SQL. Para obtener más información sobre los elementos SQL compatibles con Amazon S3 Select, consulte Referencia de SQL para Amazon S3 Select.

Puede realizar consultas de SQL con los SDK de AWS, la operación de la API de REST SelectObjectContent, la AWS Command Line Interface (AWS CLI) o la consola de Amazon S3. La consola de Amazon S3 limita la cantidad de datos devueltos a 40 MB. Para recuperar más datos, utilice la AWS CLI o la API.

Requisitos y límites

A continuación, se describen los requisitos para utilizar Amazon S3 Select:

  • Debe tener el permiso s3:GetObject para el objeto que está consultando.

  • Si el objeto que está consultando está cifrado con cifrado en el servidor con claves proporcionados por el cliente (SSE-C), debe utilizar https y proporcionar la clave de cifrado en la solicitud.

Cuando se usa Amazon S3 Select, se aplican los siguientes límites:

  • La longitud máxima de las expresiones SQL es de 256 KB.

  • La longitud máxima de un registro en la entrada o resultado es de 1 MB.

  • Amazon S3 Select solo puede emitir datos anidados mediante el formato de salida de JSON.

  • No se pueden consultar objetos en las clases de almacenamiento S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive o Reduced Redundancy Storage (RRS). Tampoco puede consultar los objetos del nivel S3 Intelligent-Tiering Archive Access ni del nivel S3 Intelligent-Tiering Deep Archive Access. Para obtener más información acerca de las clases de almacenamiento, consulte Uso de las clases de almacenamiento de Amazon S3.

Se aplican limitaciones adicionales al utilizar Amazon S3 Select con objetos Parquet:

  • Amazon S3 Select solo admite compresión en columnas usando GZIP o Snappy. Amazon S3 Select no admite la compresión de todo el objeto para objetos Parquet.

  • Amazon S3 Select no admite salida Parquet. Debe especificar el formato de salida como CSV o JSON.

  • El tamaño de grupo de filas sin comprimir máximo es de 512 MB.

  • Debe utilizar los tipos de datos que están especificados en el esquema del objeto.

  • Seleccionar en un campo repetido devuelve solo el último valor.

Crear una solicitud

Cuando se construye una solicitud, se deben proporcionar detalles del objeto que se está consultando mediante un objeto InputSerialization. También utilizará un objeto OutputSerialization para proporcionar información sobre cómo se deben devolver los resultados. Asimismo, deberá incluir la expresión SQL que Amazon S3 utiliza para filtrar la solicitud.

Para obtener más información acerca de cómo construir una solicitud de selección de Amazon S3, consulte SelectObjectContent en la referencia de API de Amazon Simple Storage Service. También puede consultar uno de los ejemplos de código de SDK en las secciones siguientes.

Solicitudes que utilizan intervalos de análisis

Amazon S3 Select le permite analizar un subconjunto de un objeto especificando el intervalo de bytes que se desea consultar. Esto le permite paralelizar el análisis del objeto completo dividiendo el trabajo en solicitudes separadas de Amazon S3 Select para una serie de intervalos de análisis sin solapamiento.

No es necesario que los intervalos de análisis estén alineados con los límites de registros. Una solicitud de intervalo de análisis de Amazon S3 Select se ejecuta en el intervalo de bytes especificado. La consulta procesará un registro que comienza dentro del intervalo de análisis especificado, pero se extiende más allá de ese intervalo de análisis. Por ejemplo, a continuación se muestra un objeto de Amazon S3 que contiene una serie de registros en formato CSV delimitado por líneas:

A,B C,D D,E E,F G,H I,J

Suponga que utiliza el parámetro ScanRange de Amazon S3 Select y establece Inicio en (Byte) 1 y Fin en (Byte) 4. De este modo, el rango de escaneo comenzaría en “,” y analizaría hasta el final del registro a partir deC. Su solicitud de rango de escaneo devolverá el resultado C, D porque ese es el final del registro.

El rango de análisis de Amazon S3 Select es compatible con objetos Parquet, CSV (sin delimitadores entrecomillados) y JSON (solo en modo LINES). Los objetos CSV y JSON deben estar sin comprimir. Para objetos JSON y CSV basados en líneas, cuando se especifica un intervalo de análisis como parte de la solicitud de Amazon S3 Select, se procesan todos los registros que comienzan dentro del intervalo de análisis. Para objetos Parquet, se procesan todos los grupos de filas que comienzan dentro del rango de análisis solicitado.

Las solicitudes de intervalo de exploración de Amazon S3 Select están disponibles para utilizarlas con la AWS CLI, la API de Amazon S3 y los SDK de AWS. Puede utilizar el parámetro ScanRange en la solicitud de Amazon S3 Select para esta funcionalidad. Para obtener más información, consulte SelectObjectContent en la Referencia de la API de Amazon Simple Storage Service.

Errores

Amazon S3 Select devuelve un código de error y un mensaje de error asociado cuando se produce un problema al intentar ejecutar una consulta. Para obtener una lista de códigos de error y descripciones, consulte la sección Lista de códigos de error de contenido de objetos SELECT de la página Respuestas de error en la referencia de Amazon Simple Storage Service API.

Para obtener más información acerca de Amazon S3 Select, consulte los siguientes temas.