Exportar, importar, consultar e unir tabelas no DynamoDB usando o Amazon EMR
nota
O Conector Amazon EMR-DynamoDB está como código aberto no GitHub. Para obter mais informações, consulte https://github.com/awslabs/emr-dynamodb-connector
O DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que proporciona uma performance rápida e previsível com escalabilidade contínua. Os desenvolvedores podem criar uma tabela de banco de dados e ampliar seu tráfego de solicitação ou armazenamento sem limites. O DynamoDB distribui automaticamente dados e tráfego para a tabela através de um número suficiente de servidores, a fim de controlar a capacidade de solicitação especificada pelo cliente e a quantidade de dados armazenados, enquanto mantém um desempenho consistente e rápido. Usando o Amazon EMR e o Hive, você pode processar grandes quantidades de dados com rapidez e eficiência, como os dados armazenados no DynamoDB. Para obter mais informações sobre o DynamoDB, consulte o Guia do desenvolvedor do Amazon DynamoDB.
Apache Hive é uma camada de software que você pode usar para consultar clusters do map-reduce usando uma linguagem simplificada semelhante ao SQL chamada HiveQL. Ele é executado sobre a arquitetura do Hadoop. Para obter mais informações sobre o Hive e o HiveQL, acesse o documento HiveQL Language Manual
Você pode usar o Amazon EMR com uma versão personalizada do Hive que inclua conectividade com o DynamoDB para executar operações em dados armazenados no DynamoDB:
-
Carregar dados do DynamoDB no Sistema de Arquivos Distribuído do Hadoop (HDFS) e usá-los como entrada em um cluster do Amazon EMR.
-
Consultar dados dinâmicos do DynamoDB usando instruções semelhantes a SQL (HiveQL).
-
Unir dados armazenados no DynamoDB e exportar ou consultar com base nos dados unidos.
-
Exportar dados armazenados no DynamoDB para o Amazon S3.
-
Importar dados armazenados no Amazon S3 para o DynamoDB.
nota
O conector Amazon EMR-DynamoDB não é compatível com os clusters configurados para usar a autenticação Kerberos.
Para executar cada uma das seguintes tarefas, será necessário iniciar um cluster do Amazon EMR, especificar a localização dos dados no DynamoDB e emitir comandos do Hive para manipular os dados no DynamoDB.
Há várias maneiras para iniciar um cluster do Amazon EMR: você pode usar o console do Amazon EMR, a interface de linha de comando (CLI) ou pode programar seu cluster usando o AWS SDK ou a API do Amazon EMR. Você também pode escolher se deseja executar um cluster do Hive interativamente ou a partir de um script. Nesta seção, vamos mostrar a você como iniciar um cluster interativo do Hive pelo console do Amazon EMR e pela CLI.
Usar o Hive, interativamente, é uma ótima maneira de testar o desempenho das consultas e ajustar seu aplicativo. Depois que você tiver estabelecido um conjunto de comandos do Hive que serão executados de forma regular, considere criar um script do Hive que o Amazon EMR possa executar para você.
Atenção
As operações de leitura ou de gravação do Amazon EMR em uma tabela do DynamoDB contam em relação ao throughput provisionado estabelecido, o que pode aumentar a frequência de exceções de throughput provisionado. Para grandes solicitações, o Amazon EMR implementa novas tentativas com recuo exponencial para gerenciar a carga de solicitações na tabela do DynamoDB. Executar trabalhos do Amazon EMR simultaneamente com outro tráfego pode fazer com que você exceda o nível de throughput provisionado alocado. Você pode monitorar isso verificando a métrica ThrottleRequests no Amazon CloudWatch. Se a carga de solicitações for muito alta, você pode reiniciar o cluster e definir Configuração de porcentagem de leitura ou Configuração de porcentagem de gravação como um valor menor para limitar as operações do Amazon EMR. Para obter mais informações sobre as configurações de throughput do DynamoDB, consulte Provisioned throughput.
Se uma tabela estiver configurada para o Modo sob demanda, será necessário alterá-la novamente para o modo provisionado antes de executar uma operação de exportação ou importação. Os pipelines precisam de um throughput para calcular os recursos a serem usados em uma DynamoDBtable. O modo sob demanda remove o throughput provisionado. Para provisionar a capacidade de throughput, você pode usar as métricas do Amazon CloudWatch Events para avaliar o throughput agregado usado por uma tabela.