/**
* Copyright 2012 Willet Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.willetinc.hadoop.mapreduce.dynamodb;
import org.apache.hadoop.conf.Configuration;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.dynamodb.AmazonDynamoDBClient;
import com.willetinc.hadoop.mapreduce.dynamodb.DynamoDBScanInputFormat.NullDynamoDBWritable;
import com.willetinc.hadoop.mapreduce.dynamodb.io.DynamoDBKeyWritable;
public class DynamoDBConfiguration {
public final static String ACCESS_KEY_PROPERTY = "mapreduce.dynamodb.access.key";
public final static String SECRET_KEY_PROPERTY = "mapreduce.dynamodb.secret.key";
public final static String DYNAMODB_ENDPOINT = "mapreduce.dynamodb.endpoint";
public final static String INPUT_TABLE_NAME_PROPERTY = "mapreduce.dynamodb.input.talble.name";
public static final String INPUT_CLASS_PROPERTY = "mapreduce.dynamodb.input.class";
public static final String OUTPUT_TABLE_NAME_PROPERTY = "mapreduce.dynamodb.output.table.name";
public static final String HASH_KEY_TYPE_PROPERTY = "mapreduce.dynamodb.query.hashkey.type";
public static final String HASH_KEY_VALUE_PROPERTY = "mapreduce.dynamodb.query.hashkey.value";
public static final String RANGE_KEY_TYPE_PROPERTY = "mapreduce.dynamodb.query.rangekey.type";
public static final String RANGE_KEY_VALUES_PROPERTY = "mapreduce.dynamodb.query.rangekey.values";
public static final String RANGE_KEY_OPERATOR_PROPERTY = "mapreduce.dynamodb.query.rangekey.operator";
public static final String RANGE_KEY_INTERPOLATE_PROPERTY = "mapreduce.dynamodb.query.rangekey.interpolate";
public static final String RANGE_KEY_INTERPOLATE_MIN_VALUE_PROPERTY = "mapreduce.dynamodb.query.rangekey.interpolate.minvalue";
public static final String RANGE_KEY_INTERPOLATE_MAX_VALUE_PROPERTY = "mapreduce.dynamodb.query.rangekey.interpolate.maxvalue";
public static void setCredentals(
Configuration conf,
String accessKey,
String secretKey ) {
conf.set(ACCESS_KEY_PROPERTY, accessKey);
conf.set(SECRET_KEY_PROPERTY, secretKey);
}
private Configuration conf;
public DynamoDBConfiguration(Configuration conf) {
this.conf = conf;
}
public Configuration getConf() {
return conf;
}
public AmazonDynamoDBClient getAmazonDynamoDBClient() {
String accessKey = conf.get(ACCESS_KEY_PROPERTY);
String secretKey = conf.get(SECRET_KEY_PROPERTY);
AWSCredentials credentials = new BasicAWSCredentials(accessKey,
secretKey);
AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials);
String endpoint = conf.get(DYNAMODB_ENDPOINT);
if(null != endpoint) {
client.setEndpoint(endpoint);
}
return client;
}
public String getDynamoDBEndpoint() {
return conf.get(DYNAMODB_ENDPOINT);
}
public void setDynamoDBEndpoint(String endpoint) {
conf.set(DYNAMODB_ENDPOINT, endpoint);
}
public String getInputTableName() {
return conf.get(INPUT_TABLE_NAME_PROPERTY);
}
public void setInputTableName(String tableName) {
conf.set(INPUT_TABLE_NAME_PROPERTY, tableName);
}
public Class<?> getInputClass() {
return conf.getClass(INPUT_CLASS_PROPERTY, NullDynamoDBWritable.class);
}
public void setInputClass(Class<? extends DynamoDBKeyWritable> inputClass) {
conf.setClass(INPUT_CLASS_PROPERTY, inputClass,
DynamoDBKeyWritable.class);
}
public String getOutputTableName() {
return conf.get(OUTPUT_TABLE_NAME_PROPERTY);
}
public void setOutputTableName(String tableName) {
conf.set(OUTPUT_TABLE_NAME_PROPERTY, tableName);
}
}