Hi there,
I don't know how to use ColumnValueFilter in hbase-0.20.2
to read some rows through my built Secondary Index.
Any suggestions or samples?
public static void readFilteredRowsFromSecondaryIndex() throws IOException
{
IndexedTable table = new IndexedTable(config,
Bytes.toBytes("test_table"));
Filter filter = new
ColumnValueFilter(Bytes.toBytes("columnfamily1:column1"),
CompareOp.EQUAL,
Bytes.toBytes("ray1-40"));
ResultScanner scanner = table.getIndexedScanner("column1",
HConstants.EMPTY_START_ROW,
null,
new byte[][] {
Bytes.toBytes("columnfamily1:column1"),
Bytes.toBytes("columnfamily1:column1")},
filter,
new byte[][] {
Bytes.toBytes("columnfamily1:column1"),
Bytes.toBytes("columnfamily1:column1")});
for (Result rowResult : scanner) {
System.out.println(Bytes.toString(rowResult.getValue(Bytes.toBytes("columnfamily1:column1"))));
}
table.close();
}
---------------------------------------------------------------------------------------------------------------------------------------------------
public static void createTableWithSecondaryIndexes() throws IOException {
//HBaseConfiguration conf = new HBaseConfiguration();
HTableDescriptor desc = new HTableDescriptor("test_table");
desc.addFamily(new HColumnDescriptor("columnfamily1"));
IndexedTableDescriptor idx_desc = new IndexedTableDescriptor(desc);
idx_desc.addIndex(new IndexSpecification("column1",
Bytes.toBytes("columnfamily1:column1")));
IndexedTableAdmin admin = null;
admin = new IndexedTableAdmin(config);
if (admin.tableExists(Bytes.toBytes("test_table"))) {
if (admin.isTableEnabled("test_table")) {
admin.disableTable(Bytes.toBytes("test_table"));
}
admin.deleteTable(Bytes.toBytes("test_table"));
}
if (admin.tableExists(Bytes.toBytes("test_table-column1"))) {
if (admin.isTableEnabled("test_table-column1")) {
admin.disableTable(Bytes.toBytes("test_table-column1"));
}
admin.deleteTable(Bytes.toBytes("test_table-column1"));
}
admin.createIndexedTable(idx_desc);
}
-----------------------------------------------------------------------------------------------------------------------------------------
public static void writeToTable() throws IOException {
//HBaseConfiguration conf = new HBaseConfiguration();
IndexedTable table = new IndexedTable(config,
Bytes.toBytes("test_table"));
String row = "test_row";
Put row_update = null;
byte[] column = Bytes.toBytes("columnfamily1");
byte[][] qualifier = new byte[][] {
Bytes.toBytes("column1"),
Bytes.toBytes("column2"),
Bytes.toBytes("column3"),
};
for (int i = 0; i < 100; i++) {
row_update = new Put(Bytes.toBytes(row + i));
row_update.add(column, qualifier[0], Bytes.toBytes("ray1-" +
(i/4)));
row_update.add(column, qualifier[1], Bytes.toBytes("ray2-" +
i));
row_update.add(column, qualifier[2], Bytes.toBytes("ray3-" +
i));
table.put(row_update);
}
table.close();
}
Fleming Chiu(邱宏明)
707-6128
[email protected]
週一無肉日吃素救地球(Meat Free Monday Taiwan)
---------------------------------------------------------------------------
TSMC PROPERTY
This email communication (and any attachments) is proprietary information
for the sole use of its
intended recipient. Any unauthorized review, use or distribution by anyone
other than the intended
recipient is strictly prohibited. If you are not the intended recipient,
please notify the sender by
replying to this email, and then delete this email and any copies of it
immediately. Thank you.
---------------------------------------------------------------------------