Example usage for com.amazonaws.services.dynamodbv2.model BatchWriteItemRequest BatchWriteItemRequest

List of usage examples for com.amazonaws.services.dynamodbv2.model BatchWriteItemRequest BatchWriteItemRequest

Introduction

In this page you can find the example usage for com.amazonaws.services.dynamodbv2.model BatchWriteItemRequest BatchWriteItemRequest.

Prototype

public BatchWriteItemRequest(java.util.Map<String, java.util.List<WriteRequest>> requestItems) 

Source Link

Document

Constructs a new BatchWriteItemRequest object.

Usage

From source file:com.dell.doradus.db.s3.DynamoDBService2.java

License:Apache License

private void commitPartial(List<WriteRequest> list) {
    Timer t = new Timer();
    Map<String, List<WriteRequest>> map = new HashMap<>();
    map.put(getTenant().getName(), list);
    BatchWriteItemResult result = m_client.batchWriteItem(new BatchWriteItemRequest(map));
    int retry = 0;
    while (result.getUnprocessedItems().size() > 0) {
        if (retry == RETRY_SLEEPS.length)
            throw new RuntimeException("All retries failed");
        m_logger.debug("Committing {} unprocessed items, retry: {}", result.getUnprocessedItems().size(),
                retry + 1);/*from   w  w  w.j av a  2 s.com*/
        try {
            Thread.sleep(RETRY_SLEEPS[retry++]);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        result = m_client.batchWriteItem(new BatchWriteItemRequest(result.getUnprocessedItems()));
    }
    m_logger.debug("Committed {} writes in {}", list.size(), t);
    list.clear();
}

From source file:dynamok.sink.DynamoDbSinkTask.java

License:Apache License

@Override
public void put(Collection<SinkRecord> records) {
    if (records.isEmpty())
        return;//from  w w  w.  jav  a  2s . c om

    try {
        if (records.size() == 1 || config.batchSize == 1) {
            for (final SinkRecord record : records) {
                client.putItem(tableName(record), toPutRequest(record).getItem());
            }
        } else {
            final Iterator<SinkRecord> recordIterator = records.iterator();
            while (recordIterator.hasNext()) {
                final Map<String, List<WriteRequest>> writesByTable = toWritesByTable(recordIterator);
                final BatchWriteItemResult batchWriteResponse = client
                        .batchWriteItem(new BatchWriteItemRequest(writesByTable));
                if (!batchWriteResponse.getUnprocessedItems().isEmpty()) {
                    throw new UnprocessedItemsException(batchWriteResponse.getUnprocessedItems());
                }
            }
        }
    } catch (LimitExceededException | ProvisionedThroughputExceededException e) {
        log.debug("Write failed with Limit/Throughput Exceeded exception; backing off");
        context.timeout(config.retryBackoffMs);
        throw new RetriableException(e);
    } catch (AmazonDynamoDBException | UnprocessedItemsException e) {
        log.warn("Write failed, remainingRetries={}", 0, remainingRetries, e);
        if (remainingRetries == 0) {
            throw new ConnectException(e);
        } else {
            remainingRetries--;
            context.timeout(config.retryBackoffMs);
            throw new RetriableException(e);
        }
    }

    remainingRetries = config.maxRetries;
}

From source file:mx.iteso.desi.cloud.keyvalue.DynamoDBStorage.java

License:Apache License

@Override
public void sync() {
    Map<String, List<WriteRequest>> requestItems = new HashMap<>();
    List<WriteRequest> requestList = new ArrayList<>();
    requestItems.put(dbName, requestList);

    for (int i = 0; i < attributes.size(); i++) {
        if (i % BATCH_SIZE == 0) {
            requestList.add(new WriteRequest(new PutRequest(attributes.get(i))));
            BatchWriteItemRequest bwir = new BatchWriteItemRequest(requestItems);
            System.out.println("Result: " + client.batchWriteItem(bwir));
            requestItems = new HashMap<>();
            requestList = new ArrayList<>();
            requestItems.put(dbName, requestList);
        } else {/*from   ww  w  .  ja  v  a 2  s.c o m*/
            requestList.add(new WriteRequest(new PutRequest(attributes.get(i))));
        }
    }
    if (requestList.size() > 0) {
        BatchWriteItemRequest bwir = new BatchWriteItemRequest(requestItems);
        System.out.println("Result: " + client.batchWriteItem(bwir));
        requestItems = new HashMap<>();
        requestList = new ArrayList<>();
        requestItems.put(dbName, requestList);
    }
}