DynamoDB - Tabela de carga

O carregamento de uma tabela geralmente consiste em criar um arquivo de origem, garantindo que o arquivo de origem esteja em conformidade com uma sintaxe compatível com DynamoDB, enviando o arquivo de origem ao destino e, em seguida, confirmando uma população bem-sucedida.

Utilize o console da GUI, Java ou outra opção para executar a tarefa.

Carregar tabela usando o console da GUI

Carregue os dados usando uma combinação da linha de comando e do console. Você pode carregar dados de várias maneiras, algumas das quais são as seguintes -

  • O console
  • A linha de comando
  • Código e também
  • Pipeline de dados (um recurso discutido posteriormente no tutorial)

No entanto, para velocidade, este exemplo usa o shell e o console. Primeiro, carregue os dados de origem no destino com a seguinte sintaxe -

aws dynamodb batch-write-item -–request-items file://[filename]

Por exemplo -

aws dynamodb batch-write-item -–request-items file://MyProductData.json

Verifique o sucesso da operação acessando o console em -

https://console.aws.amazon.com/dynamodb

Escolher Tables no painel de navegação e selecione a tabela de destino na lista de tabelas.

Selecione os Itemsguia para examinar os dados que você usou para preencher a tabela. SelecioneCancel para retornar à lista da mesa.

Carregar tabela usando Java

Empregue Java criando primeiro um arquivo de origem. Nosso arquivo de origem usa o formato JSON. Cada produto tem dois atributos-chave primários (ID e Nomenclatura) e um mapa JSON (Stat) -

[ 
   { 
      "ID" : ... , 
      "Nomenclature" : ... , 
      "Stat" : { ... }
   }, 
   { 
      "ID" : ... , 
      "Nomenclature" : ... , 
      "Stat" : { ... } 
   }, 
    ... 
]

Você pode revisar o seguinte exemplo -

{ 
   "ID" : 122, 
   "Nomenclature" : "Particle Blaster 5000", 
   "Stat" : { 
      "Manufacturer" : "XYZ Inc.", 
      "sales" : "1M+", 
      "quantity" : 500, 
      "img_src" : "http://www.xyz.com/manuals/particleblaster5000.jpg", 
      "description" : "A laser cutter used in plastic manufacturing." 
   } 
}

A próxima etapa é colocar o arquivo no diretório usado pelo seu aplicativo.

Java usa principalmente o putItem e path methods para realizar a carga.

Você pode revisar o seguinte exemplo de código para processar um arquivo e carregá-lo -

import java.io.File;
import java.util.Iterator;

import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.Table;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.node.ObjectNode;

public class ProductsLoadData {  
   public static void main(String[] args) throws Exception {  
      AmazonDynamoDBClient client = new AmazonDynamoDBClient() 
         .withEndpoint("http://localhost:8000");  
      
      DynamoDB dynamoDB = new DynamoDB(client);  
      Table table = dynamoDB.getTable("Products");  
      JsonParser parser = new JsonFactory() 
         .createParser(new File("productinfo.json"));  
      
      JsonNode rootNode = new ObjectMapper().readTree(parser); 
      Iterator<JsonNode> iter = rootNode.iterator();  
      ObjectNode currentNode;  
      
      while (iter.hasNext()) { 
         currentNode = (ObjectNode) iter.next();  
         int ID = currentNode.path("ID").asInt(); 
         String Nomenclature = currentNode.path("Nomenclature").asText();  
         
         try { 
            table.putItem(new Item() 
               .withPrimaryKey("ID", ID, "Nomenclature", Nomenclature) 
               .withJSON("Stat", currentNode.path("Stat").toString()));
            System.out.println("Successful load: " + ID + " " + Nomenclature);  
         } catch (Exception e) {
            System.err.println("Cannot add product: " + ID + " " + Nomenclature);
            System.err.println(e.getMessage()); 
            break; 
         } 
      } 
      parser.close(); 
   } 
}