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 | Sí | Sí | Grupo de filas |
ORC | Sí | Sí | Stripe |
RCFile | Sí | Sí | Grupo de filas |
TextFile | No | Sí | Fila |
SequenceFile | No | Sí | Fila o bloque |
RegexSerde | No | Sí | Fila |
OpenCSV | No | Sí | Fila |
AVRO | No | Sí | 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 | Sí |
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.