/** * */ package com.impetus.kundera.hbase.client.service; import java.io.IOException; import java.util.List; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.io.RowResult; import org.apache.hadoop.hbase.util.Bytes; import com.impetus.kundera.hbase.client.HBaseData; import com.impetus.kundera.hbase.client.Reader; /** * HBase reader. * @author impetus */ public class HBaseReader implements Reader { /* (non-Javadoc) * @see com.impetus.kundera.hbase.client.Reader#LoadData(org.apache.hadoop.hbase.client.HTable, java.lang.String[], java.lang.String[], java.lang.String) */ @SuppressWarnings("unused") @Override public HBaseData LoadData(HTable hTable, String columnFamily, String[] columnName, String rowKey) throws IOException { HBaseData data = new HBaseData(columnFamily, rowKey); Get g = new Get(Bytes.toBytes(rowKey)); Result r = hTable.get(g); //TODO initially targeting to get all values on the basis for give row key and column family. RowResult rwResult = r.getRowResult(); List<KeyValue> values = r.list(); data.setColumns(values); return data; } //TODO: for first version this solution is for 1 column family per table //Later need to add support for more than 1 column family. @Override public HBaseData loadAll(HTable hTable, String... qualifiers) throws IOException { String rowKey; String columnFamily; HBaseData data=null; Scan s = new Scan(); ResultScanner scanner = hTable.getScanner(s); for (Result rr : scanner) { for(KeyValue rs:rr.list()) { rowKey = Bytes.toString(rs.getRow()); columnFamily = Bytes.toString(rs.getFamily()); data = new HBaseData(columnFamily, rowKey); data.setColumns(rr.list()); break; } } return data; } }