Single Put
|
HTable table = new HTable(conf, "testtable");
Put put = new Put(Bytes.toBytes("row1"));
put.add(Bytes.toBytes("colfam1"),
Bytes.toBytes("qual1"),
Bytes.toBytes("val1"));
put.add(Bytes.toBytes("colfam1"),
Bytes.toBytes("qual2"),
Bytes.toBytes("val2"));
table.put(put);
|
||
MultiPut(cache)
|
table.setAutoFlush(false)
table.put...
table.put...
table.put....
table.flushCommits();
|
Put can fail on exception. That why on catch better to
do flushCommits();
|
|
MultiPut(batch)
|
List<Put> puts = new ArrayList<Put>();
Put put1 = new Put(Bytes.toBytes("row1"));
put1.add(Bytes.toBytes("colfam1"),
Bytes.toBytes("qual1"),
Bytes.toBytes("val1"));
puts.add(put1);
Put put2 = new Put(Bytes.toBytes("row2"));
put2.add(Bytes.toBytes("colfam1"),
Bytes.toBytes("qual1"),
Bytes.toBytes("val2"));
puts.add(put2);
Put put3 = new Put(Bytes.toBytes("row2"));
put3.add(Bytes.toBytes("colfam1"),
Bytes.toBytes("qual2"),
Bytes.toBytes("val3"));
puts.add(put3);
table.put(puts);
|
||
SingleGet
|
Get get = new Get(Bytes.toBytes("row1"));
get.addColumn(Bytes.toBytes("colfam1"),
Bytes.toBytes("qual1"));
Result result = table.get(get);
|
||
MultiGet
|
List<Get> gets = new ArrayList<Get>();
Get get1 = new Get(row1);
get1.addColumn(cf1, qf1);
gets.add(get1);
Get get2 = new Get(row2);
get2.addColumn(cf1, qf1);
gets.add(get2);
Get get3 = new Get(row2);
get3.addColumn(cf1, qf2);
gets.add(get3);
Result[] results = table.get(gets);
|
||
Delete(Single)
|
Delete delete = new
Delete(Bytes.toBytes("row1"));
delete.deleteFamily(Bytes.toBytes("colfam3"));
table.delete(delete);
|
||
Delete(Multi)
|
List<Delete> deletes = new
ArrayList<Delete>();
Delete delete1 = new Delete(Bytes.toBytes("row1"));
delete1.setTimestamp(4);
deletes.add(delete1);
Delete delete2 = new
Delete(Bytes.toBytes("row2"));
delete2.deleteColumn(Bytes.toBytes("colfam1"),
Bytes.toBytes("qual1"));
delete2.deleteColumns(Bytes.toBytes("colfam2"),
Bytes.toBytes("qual3"), 5);
deletes.add(delete2);
Delete delete3 = new
Delete(Bytes.toBytes("row3"));
delete3.deleteFamily(Bytes.toBytes("colfam1"));
delete3.deleteFamily(Bytes.toBytes("colfam2"),
3);
deletes.add(delete3);
table.delete(deletes);
|
||
Batch
|
List<Row> batch = new ArrayList<Row>();
Put put = new Put(ROW2);
put.add(COLFAM2, QUAL1,
Bytes.toBytes("val5"));
batch.add(put);
Get get1 = new Get(ROW1);
get1.addColumn(COLFAM1, QUAL1);
batch.add(get1);
Delete delete = new Delete(ROW1);
delete.deleteColumns(COLFAM1, QUAL2);
batch.add(delete);
Object[] results = new Object[batch.size()];
try {
table.batch(batch, results);
} catch (Exception e) {
System.err.println("Error: " + e);
|
||
Scan
|
Scan scan1 = new Scan();
ResultScanner scanner1 = table.getScanner(scan1);
for (Result res : scanner1) {
System.out.println(res);
}
scanner1.close();
|
So far,
each call to next()
will be a separate RPC for each row—even when you use the
next(int nbRows) method,
because it is nothing else but a client-side loop over
next()
calls
Thus it
would make
sense to fetch more than one row per RPC if
possible
|
Cache - number of rows
scan.setCaching(caching);
batch - number of columns
scan.setBatch(batch);
|
Saturday, April 27, 2013
HBase client API summary
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment