com.hmsonline.storm.cassandra.bolt.mapper.DefaultTupleMapper Maven / Gradle / Ivy
package com.hmsonline.storm.cassandra.bolt.mapper;
import java.util.HashMap;
import java.util.Map;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
public class DefaultTupleMapper implements TupleMapper {
private static final long serialVersionUID = 1L;
private String rowKeyField;
private String columnFamily;
private String keyspace;
/**
* Construct default mapper.
*
* @param columnFamily
* column family to write to.
* @param rowKeyField
* tuple field to use as the row key.
*/
public DefaultTupleMapper(String keyspace, String columnFamily, String rowKeyField) {
this.rowKeyField = rowKeyField;
this.columnFamily = columnFamily;
this.keyspace = keyspace;
}
@Override
public String mapToRowKey(Tuple tuple) {
return tuple.getValueByField(this.rowKeyField).toString();
}
@Override
public String mapToKeyspace(Tuple tuple) {
return this.keyspace;
}
/**
* Default behavior is to write each value in the tuple as a key:value pair
* in the Cassandra row.
*
* @param tuple
* @return
*/
@Override
public Map mapToColumns(Tuple tuple) {
Fields fields = tuple.getFields();
Map columns = new HashMap();
for (int i = 0; i < fields.size(); i++) {
String name = fields.get(i);
Object value = tuple.getValueByField(name);
columns.put(name, (value != null ? value.toString() : ""));
}
return columns;
}
@Override
public String mapToColumnFamily(Tuple tuple) {
return this.columnFamily;
}
@Override
public Class getKeyClass() {
// TODO Auto-generated method stub
return String.class;
}
@Override
public Class getColumnNameClass() {
// TODO Auto-generated method stub
return String.class;
}
@Override
public Class getColumnValueClass() {
// TODO Auto-generated method stub
return String.class;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy