Archivos de datos para consultas en Amazon Redshift Spectrum - Amazon Redshift

Archivos de datos para consultas en Amazon Redshift Spectrum

En esta sección se describe cómo crear archivos de datos en Amazon S3 en un formato compatible con Redshift Spectrum.

Los archivos de datos que utiliza para las consultas en Amazon Redshift Spectrum son, por lo general, los mismos tipos de archivos que usa para otras aplicaciones. Por ejemplo, se utilizan los mismos tipos de archivos con Amazon Athena, Amazon EMR y Amazon QuickSight. Puede consultar los datos en su formato original desde Amazon S3 directamente. Para hacer esto, los archivos de datos deben estar en un formato que Redshift Spectrum admita y deben estar ubicados en un bucket de Amazon S3 al cual su clúster tenga acceso.

El bucket de Amazon S3 con los archivos de datos y el clúster de Amazon Redshift deben estar en la misma región de AWS. Para obtener información acerca de las regiones de AWS admitidas, consulte Regiones de Amazon Redshift Spectrum.

Formatos de datos para Redshift Spectrum

Redshift Spectrum admite los siguientes formatos de datos estructurados y semiestructurados.

Formato de archivo En columnas Admite lecturas paralelas Unidad dividida
Parquet Grupo de filas
ORC Stripe
RCFile Grupo de filas
TextFile No Fila
SequenceFile No Fila o bloque
RegexSerde No Fila
OpenCSV No Fila
AVRO No Bloque
Ion No No N/A
JSON No No N/A

En la tabla anterior, los encabezados indican lo siguiente:

  • En columnas: si el formato de archivo almacena físicamente los datos en una estructura orientada a columnas en lugar de hacerlo en una orientada a filas.

  • Admite lecturas paralelas: si el formato de archivo admite la lectura de bloques individuales dentro del archivo. La lectura de bloques individuales permite el procesamiento distribuido de un archivo entre varias solicitudes de Redshift Spectrum independientes en lugar de tener que leer el archivo completo en una sola solicitud.

  • Unidad dividida: para formatos de archivo que se pueden leer en paralelo, la unidad dividida es el fragmento más pequeño de datos que puede procesar una sola solicitud de Redshift Spectrum.

    nota

    Los valores de marca temporal de los archivos de texto deben tener el formato yyyy-MM-dd HH:mm:ss.SSSSSS, tal y como se muestra en el siguiente valor de marca temporal: 2017-05-01 11:30:59.000000.

    Recomendamos utilizar un formato de archivo de almacenamiento en columnas, como Apache Parquet. Con un formato de archivo de almacenamiento en columnas, se puede reducir la transferencia de datos desde Amazon S3 al seleccionar únicamente las columnas que necesite.

Tipos de compresión para Redshift Spectrum

Para reducir el espacio de almacenamiento, mejorar el rendimiento y reducir los costos, se recomienda encarecidamente comprimir los archivos de datos. Redshift Spectrum reconoce los tipos de compresión de archivos basados en la extensión del archivo.

Redshift Spectrum admite los siguientes tipos de compresión y extensiones.

Algoritmo de compresión Extensión de archivo Soporta lecturas paralelas
Gzip .gz No
Bzip2 .bz2
Snappy .snappy No

Puede aplicar compresión a distintos niveles. En la mayoría de los casos, se comprime un archivo completo o se comprimen bloques individuales dentro de un archivo. La compresión de los formatos en columna en el nivel de archivo no ofrece beneficios en el rendimiento.

Para que Redshift Spectrum pueda leer un archivo en paralelo, debe cumplirse lo siguiente:

  • El formato de archivo admite lecturas paralelas.

  • La compresión de nivel de archivo, si la hay, admite lecturas paralelas.

No importa si las unidades divididas individuales dentro de un archivo se comprimen con un algoritmo de compresión que se puede leer en paralelo, ya que cada unidad dividida se procesa con una sola solicitud de Redshift Spectrum. Un ejemplo de esto son los archivos Parquet comprimidos con Snappy. Los grupos de filas individuales del archivo Parquet se comprimen con Snappy, pero la estructura de nivel superior del archivo permanece sin comprimir. En este caso, el archivo se puede leer en paralelo porque cada solicitud de Redshift Spectrum puede leer y procesar grupos de filas individuales de Amazon S3.

Cifrado para Redshift Spectrum

Redshift Spectrum descifra de manera transparente archivos de datos cifrados que hayan utilizando las siguientes opciones de cifrado:

  • cifrado del lado del servidor (SSE-S3) a través de una clave de cifrado AES-256 administrada por Amazon S3

  • cifrado del lado del servidor con claves administradas por AWS Key Management Service (SSE-KMS)

Redshift Spectrum no admite el cifrado del lado del cliente de Amazon S3. Para obtener más información sobre el cifrado del lado del servidor, consulte Protección de datos con el cifrado del lado del servidor en la Guía del usuario de Amazon Simple Storage Service.

Amazon Redshift utiliza un procesamiento masivo en paralelo (MPP) para lograr una ejecución rápida de las consultas complejas que operan sobre grandes cantidades de datos. Redshift Spectrum extiende el mismo principio para consultar datos externos, utilizando distintas instancias de Redshift Spectrum según se necesite para examinar archivos. Coloque los archivos en una carpeta separada para cada tabla.

Puede optimizar los datos para el procesamiento en paralelo haciendo lo siguiente:

  • Si el formato de archivo o la compresión no admiten la lectura en paralelo, divida los archivos grandes en muchos archivos más pequeños. Recomendamos utilizar tamaños de archivo de entre 64 MB y 1 GB.

  • Mantenga todos los archivos con, aproximadamente, el mismo tamaño. Si algunos archivos son mucho más grandes que otros, Redshift Spectrum no podrá distribuir uniformemente la carga de trabajo.