I'm sorry, in my previous post, I meant to write > I think this happens because I only add "name", which is orthogonal to the filter prefix.
On Mon, Aug 3, 2015 at 4:39 PM, Dmitry Minkovsky <[email protected]> wrote: > I'm trying to construct a `Get` the does two things: > > - Gets a cell by specific, known column qualifier, and > - Gets more cells by column qualifier prefix > > > > public class Test { > > public static final byte[] FAMILY = Bytes.toBytes("f"); > > public static void main(String[] args) throws IOException { > > // Make a connection > > > Configuration config = HBaseConfiguration.create(); > Connection connection = ConnectionFactory.createConnection(config); > > Table table = connection.getTable(TableName.valueOf("t")); > > // Create a sample row > > byte[] row = Bytes.toBytes("row1"); > > > Put put = new Put(row) > .addColumn(FAMILY, Bytes.toBytes("name"), > Bytes.toBytes("dima")) > .addColumn(FAMILY, Bytes.toBytes("sess:100"), > Bytes.toBytes("deadbeef")) > .addColumn(FAMILY, Bytes.toBytes("age"), Bytes.toBytes("30")); > > table.put(put); > > > // Query for the sample row > > > Get get = new Get(row) > .addColumn(FAMILY, Bytes.toBytes("name")) > .setFilter(new ColumnPrefixFilter(Bytes.toBytes("sess"))); > > Result result = table.get(get); > > System.out.println(result.size()); > > Map<byte[], byte[]> map = result.getFamilyMap(FAMILY); > > if (map != null) { > for (Map.Entry<byte[], byte[]> entry : map.entrySet()) { > System.out.println("key: `" + > Bytes.toString(entry.getKey()) + "`, value: `" + > Bytes.toString(entry.getValue()) + "`"); > } > } > > table.close(); > connection.close(); > } > } > > > The desire here is to get two columns/cells: "name" and "sess:100". > However, I get no cells. I think this happens because I only add "name" and > then filter it out. What is the best way to get the desired effect? >
