Carga de datos desde una tabla de Amazon DynamoDB
Puede usar el comando COPY para cargar una tabla con datos de una tabla específica de Amazon DynamoDB.
importante
La tabla de Amazon DynamoDB que proporciona los datos debe crearse en la misma región de AWS que el clúster, a menos que use la opción REGION para especificar la región de AWS en la que se encuentra la tabla de Amazon DynamoDB.
El comando COPY utiliza la arquitectura de procesamiento masivo en paralelo (MPP) de Amazon Redshift para leer y cargar datos en paralelo desde una tabla de Amazon DynamoDB. Para aprovechar al máximo los beneficios del procesamiento en paralelo, puede establecer estilos de distribución en las tablas de Amazon Redshift. Para obtener más información, consulte Distribución de datos para la optimización de consultas.
importante
Cuando el comando COPY lee los datos desde la tabla de Amazon DynamoDB, la transferencia de datos resultante es parte del rendimiento aprovisionado de esa tabla.
Para evitar el consumo de cantidades excesivas de rendimiento de lectura aprovisionado, le recomendamos que no cargue datos de las tablas de Amazon DynamoDB que se encuentren en entornos de producción. Si efectivamente carga datos desde tablas de producción, le recomendamos que establezca la opción READRATIO en un valor mucho más bajo que el porcentaje promedio de rendimiento provisionado no usado. Una configuración READRATIO baja ayudará a minimizar los problemas de limitación controlada. Para usar el rendimiento aprovisionado completo de una tabla de Amazon DynamoDB, establezca el valor de READRATIO en 100.
El comando COPY establece una concordancia entre los nombres de atributo de los elementos recuperados de la tabla de DynamoDB y los nombres de columna de una tabla de Amazon Redshift existente mediante las siguientes reglas:
-
Las columnas de la tabla de Amazon Redshift establecen una concordancia, sin distinción entre mayúsculas y minúsculas, con los atributos de los elementos de Amazon DynamoDB. Si un elemento en la tabla de DynamoDB tiene varios atributos que difieren solo en las mayúsculas y minúsculas, como Price y PRICE, el comando COPY provocará un error.
-
Las columnas de la tabla de Amazon Redshift que no concuerdan con ningún atributo de la tabla de Amazon DynamoDB se cargan como NULL o empty, según el valor especificado en la opción EMPTYASNULL del comando COPY.
-
Los atributos de Amazon DynamoDB que no concuerdan con ninguna columna de la tabla de Amazon Redshift se descartan. Los atributos se leen antes de hacerlos coincidir, por lo que incluso los atributos descartados consumen parte del rendimiento provisionado de esa tabla.
-
Solo se admiten los atributos de Amazon DynamoDB con tipos de datos STRING y NUMBER escalares. No se admiten los tipos de datos BINARY y SET de Amazon DynamoDB. Si un comando COPY prueba cargar un atributo con un tipo de dato incompatible, el comando provocará un error. Si el atributo no concuerda con una columna de la tabla de Amazon Redshift, COPY no intenta cargarlo y no genera un error.
El comando COPY usa la siguiente sintaxis para cargar datos desde una tabla de Amazon DynamoDB:
COPY <redshift_tablename> FROM 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';
Los valores de authorization (autorización) son las credenciales de AWS necesarias para obtener acceso a la tabla de Amazon DynamoDB. Si estas credenciales corresponden a un usuario, este último debe tener permiso para el uso de SCAN y DESCRIBE en la tabla de Amazon DynamoDB que se está cargando.
Los valores de authorization (autorización) proporcionan la autorización de AWS que el clúster necesita para obtener acceso a la tabla de Amazon DynamoDB. El permiso debe incluir el uso de SCAN y DESCRIBE en la tabla de Amazon DynamoDB que se está cargando. Para obtener más información acerca de los permisos requeridos, consulte Permisos de IAM para COPY, UNLOAD y CREATE LIBRARY. El método de autenticación preferido es especificar el parámetro IAM_ROLE y proporcionar el Amazon Resource Name (ARN, Nombre de recurso de Amazon) de un rol de IAM con los permisos necesarios. Para obtener más información, consulte Control de acceso con base en roles.
Para realizar la autenticación con el parámetro IAM_ROLE, reemplace <aws-account-id>
y <role-name>
, tal y como se observa en la siguiente sintaxis.
IAM_ROLE 'arn:aws:iam::
<aws-account-id>
:role/<role-name>
'
En el siguiente ejemplo, se muestra la autenticación con un rol de IAM.
COPY favoritemovies FROM 'dynamodb://ProductCatalog' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
Para obtener más información acerca de otras opciones de autorización, consulte Parámetros de autorización.
Si desea validar los datos sin cargar de hecho la tabla, use la opción NOLOAD con el comando COPY.
En el siguiente ejemplo, la tabla FAVORITEMOVIES se carga con datos de la tabla de DynamoDB my-favorite-movies-table. La actividad de lectura puede consumir hasta el 50% del rendimiento provisionado.
COPY favoritemovies FROM 'dynamodb://my-favorite-movies-table' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' READRATIO 50;
Para maximizar el rendimiento, el comando COPY carga los datos desde una tabla de Amazon DynamoDB en paralelo en todos los nodos informáticos del clúster.
Rendimiento aprovisionado con compresión automática
De forma predeterminada, el comando COPY aplica una compresión automática siempre que especifique una tabla destino vacía sin cifrado de compresión. En un principio, el análisis de compresión automático realiza una muestra de una gran cantidad de filas de la tabla de Amazon DynamoDB. El tamaño de la muestra se basa en el valor del parámetro COMPROWS. El valor predeterminado es 100 000 filas por sector.
Una vez terminado el muestreo, las filas de muestra se descartan y se carga la tabla completa. Como resultado, muchas filas se leen dos veces. Para obtener más información acerca de cómo funciona la compresión automática, consulte Carga de tablas con compresión automática.
importante
Cuando el comando COPY lee datos de la tabla de Amazon DynamoDB, incluidas las filas usadas para el muestreo, la transferencia de datos resultante es parte del rendimiento aprovisionado de esa tabla.
Carga de datos multibyte desde Amazon DynamoDB
Si los datos incluyen caracteres multibyte no ASCII (como caracteres cirílicos o chinos) debe cargar los datos en columnas VARCHAR. El tipo de datos VARCHAR admite caracteres UTF-8 de cuatro bytes, pero el tipo de datos CHAR solo acepta caracteres ASCII de un solo byte. No puede cargar caracteres de cinco bytes o más en tablas de Amazon Redshift. Para obtener más información acerca de los comandos CHAR y VARCHAR, consulte Tipos de datos.