List of usage examples for com.amazonaws.services.dynamodbv2.model BatchWriteItemRequest BatchWriteItemRequest
public BatchWriteItemRequest(java.util.Map<String, java.util.List<WriteRequest>> requestItems)
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); } }