private void setTableProperties()

in emr-dynamodb-tools/src/main/java/org/apache/hadoop/dynamodb/tools/DynamoDBExport.java [100:149]


  private void setTableProperties(JobConf jobConf, String tableName, Double readRatio, Integer
      totalSegments) {
    jobConf.set(DynamoDBConstants.TABLE_NAME, tableName);
    jobConf.set(DynamoDBConstants.INPUT_TABLE_NAME, tableName);
    jobConf.set(DynamoDBConstants.OUTPUT_TABLE_NAME, tableName);

    DynamoDBClient client = new DynamoDBClient(jobConf);
    TableDescription description = client.describeTable(tableName);

    Long itemCount = description.getItemCount();
    Long tableSizeBytes = description.getTableSizeBytes();

    if (description.getBillingModeSummary() == null
            || description.getBillingModeSummary().getBillingMode()
        .equals(DynamoDBConstants.BILLING_MODE_PROVISIONED)) {
      jobConf.set(DynamoDBConstants.READ_THROUGHPUT,
          description.getProvisionedThroughput().getReadCapacityUnits().toString());
      jobConf.set(DynamoDBConstants.WRITE_THROUGHPUT,
          description.getProvisionedThroughput().getWriteCapacityUnits().toString());
    } else {
      // If not specified at the table level, set a hard coded value of 40,000
      jobConf.set(DynamoDBConstants.READ_THROUGHPUT,
          DynamoDBConstants.DEFAULT_CAPACITY_FOR_ON_DEMAND.toString());
      jobConf.set(DynamoDBConstants.WRITE_THROUGHPUT,
          DynamoDBConstants.DEFAULT_CAPACITY_FOR_ON_DEMAND.toString());
    }

    jobConf.set(DynamoDBConstants.ITEM_COUNT, itemCount.toString());
    jobConf.set(DynamoDBConstants.TABLE_SIZE_BYTES, tableSizeBytes.toString());

    Double averageItemSize = DynamoDBUtil.calculateAverageItemSize(description);
    jobConf.set(DynamoDBConstants.AVG_ITEM_SIZE, averageItemSize.toString());

    log.info("Read throughput:       " + jobConf.get(DynamoDBConstants.READ_THROUGHPUT));
    log.info("Write throughput:      " + jobConf.get(DynamoDBConstants.WRITE_THROUGHPUT));
    log.info("Item count:            " + itemCount);
    log.info("Table size:            " + tableSizeBytes);
    log.info("Average item size:     " + averageItemSize);

    // Optional properties
    if (readRatio != null) {
      jobConf.set(DynamoDBConstants.THROUGHPUT_READ_PERCENT, readRatio.toString());
      log.info("Throughput read ratio: " + readRatio);
    }

    if (totalSegments != null) {
      jobConf.set(DynamoDBConstants.SCAN_SEGMENTS, totalSegments.toString());
      log.info("Total segment count:   " + totalSegments);
    }
  }