package com.xavient.dip.apex.operator;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
import com.datatorrent.contrib.hbase.AbstractHBaseWindowPutOutputOperator;
import com.xavient.dip.common.config.DiPConfiguration;
public class HBaseSinkOperator extends AbstractHBaseWindowPutOutputOperator<Object[]> {
@SuppressWarnings("unused")
private String rowKey;
private String columnFamily;
private String[] columnFields;
public HBaseSinkOperator(Configuration config) {
this.rowKey = config.get(DiPConfiguration.HBASE_ROW_KEY);
this.columnFamily = config.get(DiPConfiguration.HBASE_COL_FAMILY);
this.columnFields = config.get(DiPConfiguration.HBASE_COL_NAMES).split(DiPConfiguration.HBASE_COL_DELIMITER);
}
@Override
public Put operationPut(Object[] tuple) throws IOException {
Put put = new Put(Bytes.toBytes(String.valueOf(tuple[1])));
for (int i = 2; i < tuple.length; i++) {
put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(columnFields[i - 2]),
Bytes.toBytes(String.valueOf(tuple[i])));
}
return put;
}
}