Carregar dados de uma tabela do Amazon DynamoDB - Amazon Redshift

Carregar dados de uma tabela do Amazon DynamoDB

Você pode usar o comando COPY para carregar uma tabela com dados de uma única tabela do Amazon DynamoDB.

Importante

A tabela do Amazon DynamoDB que fornece os dados deve ser criada na mesma região da AWS de seu cluster, a menos que você use a opção REGION para especificar a região da AWS na qual a tabela do Amazon DynamoDB está localizada.

O comando COPY utiliza a arquitetura de processamento maciçamente paralelo (MPP) do Amazon Redshift para ler e carregar dados em paralelo de uma tabela do Amazon DynamoDB. Você pode tirar o máximo proveito do processamento paralelo definindo estilos de distribuição em suas tabelas do Amazon Redshift. Para ter mais informações, consulte Trabalhar com estilos de distribuição de dados.

Importante

Quando o comando COPY lê dados da tabela Amazon DynamoDB, o throughput resultante faz parte do throughput provisionado dessa tabela.

Para evitar o consumo de quantidades excessivas de throughput de leitura provisionada, recomendamos que você não carregue dados de tabelas do Amazon DynamoDB que estão em ambientes de produção. Se você carregar dados de tabelas de produção, recomendamos que você defina a opção READRATIO muito mais baixa que a porcentagem média do throughput provisionado não utilizado. Uma baixa configuração de READRATIO ajudará a minimizar problemas de limitação. Para usar todo o throughput provisionado de uma tabela do Amazon DynamoDB, defina READRATIO como 100.

O comando COPY combina os nomes dos atributos nos itens recuperados da tabela DynamoDB com os nomes das colunas em uma tabela existente do Amazon Redshift usando as seguintes regras:

  • As colunas da tabela do Amazon Redshift não fazem distinção entre maiúsculas e minúsculas com os atributos de item do Amazon DynamoDB. Se um item em uma tabela do DynamoDB contém vários atributos que diferem somente na capitalização, tal como Price e PRICE, o comando COPY falhará.

  • As colunas da tabela Amazon Redshift que não correspondem a um atributo na tabela Amazon DynamoDB são carregadas como NULL ou vazias, dependendo do valor especificado com a opção EMPTYASNULL no comando COPY.

  • Os atributos do Amazon DynamoDB que não correspondem a uma coluna na tabela do Amazon Redshift são descartados. Os atributos são lidos antes de serem combinados, portanto mesmo os atributos descartados consomem parte do throughput provisionado da tabela.

  • Apenas atributos do Amazon DynamoDB com tipos de dados escalares STRING e NUMBER são aceitos. Os tipos de dados Amazon DynamoDB BINARY e SET não são aceitos. Se um comando COPY tentar carregar um atributo com um tipo de dados não compatível, o comando falhará. Se o atributo não corresponder a uma coluna da tabela Amazon Redshift, COPY não tentará carregá-lo e não gerará um erro.

O comando COPY usa a seguinte sintaxe para carregar dados de uma tabela do Amazon DynamoDB:

copy <redshift_tablename> from 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';

Os valores para autorização são as credenciais da AWS necessárias para acessar a tabela do Amazon DynamoDB. Se essas credenciais corresponderem a um usuário, ele deverá ter permissão para executar os comandos SCAN e DESCRIBE na tabela do Amazon DynamoDB que está sendo carregada.

Os valores para autorização fornecem a autorização da AWS que seu cluster necessita para acessar a tabela do Amazon DynamoDB. A permissão deve incluir SCAN e DESCRIBE para a tabela do Amazon DynamoDB que está sendo carregada. Para obter mais informações sobre as permissões necessárias, consulte Permissões do IAM para COPY, UNLOAD e CREATE LIBRARY. O método preferido de autenticação é especificar o parâmetro IAM_ROLE e fornecer o nome de recurso da Amazon (ARN) para uma função do IAM com as permissões necessárias. Para ter mais informações, consulte Controle de acesso com base em função.

Para autenticação usando o parâmetro IAM_ROLE, <aws-account-id> e <role-name> conforme exibido na sintaxe a seguir.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

O seguinte exemplo mostra a autenticação usando uma função do IAM.

copy favoritemovies from 'dynamodb://ProductCatalog' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Para obter mais informações sobre outras opções de autorização, consulte Parâmetros de autorização

Se você quiser validar seus dados sem realmente carregar a tabela, use a opção NOLOAD com o comando COPY.

O exemplo a seguir carrega a tabela FAVORITEMOVIES com dados da tabela my-favorite-movies-table do DynamoDB. A atividade de leitura pode consumir até 50% do throughput provisionado.

copy favoritemovies from 'dynamodb://my-favorite-movies-table' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' readratio 50;

Para maximizar o throughput, o comando COPY carrega dados de uma tabela do Amazon DynamoDB em paralelo entre os nós de computação no cluster.

Throughput provisionado com compactação automática

Por padrão, o comando COPY aplica a compactação automática sempre que você especifica uma tabela de destino vazia sem codificação de compactação. A análise de compressão automática inicialmente obtém amostras de um grande número de linhas da tabela Amazon DynamoDB. O tamanho da amostra é baseado no valor do parâmetro COMPROWS. O padrão é 100.000 linhas por fatia.

Após o teste, as linhas da amostra são descartadas e a tabela inteira é carregada. Como resultado, muitas linhas são lidas duas vezes. Para obter mais informações sobre como funciona a compactação automática, consulte Carregamento de tabelas com compactação automática.

Importante

Quando o comando COPY lê dados da tabela Amazon DynamoDB, incluindo as linhas usadas para amostragem, o throughput de dados resultante faz parte do throughput provisionado dessa tabela.

Carregar dados multibyte do Amazon DynamoDB

Se seus dados incluem caracteres multibyte não ASCII (tal como caracteres chineses ou cirílicos), você deve carregar os dados em colunas VARCHAR. O tipo de dados VARCHAR é compatível com caracteres UTF-8 de quatro bytes, mas o tipo de dados CHAR aceita apenas caracteres ASCII de único byte. Você não pode carregar caracteres de cinco bytes ou mais nas tabelas do Amazon Redshift. Para obter mais informações sobre CHAR e VARCHAR, consulte Tipos de dados.