Search in sources :

Example 1 with TIncrement

use of org.apache.hadoop.hbase.thrift.generated.TIncrement in project hbase by apache.

the class ThriftUtilities method incrementFromThrift.

/**
 * From a {@link TIncrement} create an {@link Increment}.
 * @param tincrement the Thrift version of an increment
 * @return an increment that the {@link TIncrement} represented.
 */
public static Increment incrementFromThrift(TIncrement tincrement) {
    Increment inc = new Increment(tincrement.getRow());
    byte[][] famAndQf = CellUtil.parseColumn(tincrement.getColumn());
    if (famAndQf.length != 2) {
        return null;
    }
    inc.addColumn(famAndQf[0], famAndQf[1], tincrement.getAmmount());
    return inc;
}
Also used : Increment(org.apache.hadoop.hbase.client.Increment) TIncrement(org.apache.hadoop.hbase.thrift.generated.TIncrement)

Example 2 with TIncrement

use of org.apache.hadoop.hbase.thrift.generated.TIncrement in project hbase by apache.

the class TestThriftServer method doTestIncrements.

public static void doTestIncrements(HBaseHandler handler) throws Exception {
    List<Mutation> mutations = new ArrayList<>(1);
    mutations.add(new Mutation(false, columnAAname, valueEname, true));
    mutations.add(new Mutation(false, columnAname, valueEname, true));
    handler.mutateRow(tableAname, rowAname, mutations, null);
    handler.mutateRow(tableAname, rowBname, mutations, null);
    List<TIncrement> increments = new ArrayList<>(3);
    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));
    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));
    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));
    int numIncrements = 60000;
    for (int i = 0; i < numIncrements; i++) {
        handler.increment(new TIncrement(tableAname, rowAname, columnAname, 2));
        handler.incrementRows(increments);
    }
    Thread.sleep(1000);
    long lv = handler.get(tableAname, rowAname, columnAname, null).get(0).value.getLong();
    // Wait on all increments being flushed
    while (handler.coalescer.getQueueSize() != 0) Threads.sleep(10);
    assertEquals((100 + (2 * numIncrements)), lv);
    lv = handler.get(tableAname, rowBname, columnAAname, null).get(0).value.getLong();
    assertEquals((100 + (3 * 7 * numIncrements)), lv);
    assertTrue(handler.coalescer.getSuccessfulCoalescings() > 0);
}
Also used : ArrayList(java.util.ArrayList) TIncrement(org.apache.hadoop.hbase.thrift.generated.TIncrement) BatchMutation(org.apache.hadoop.hbase.thrift.generated.BatchMutation) Mutation(org.apache.hadoop.hbase.thrift.generated.Mutation)

Example 3 with TIncrement

use of org.apache.hadoop.hbase.thrift.generated.TIncrement in project hbase by apache.

the class TestThriftServer method doTestIncrements.

public static void doTestIncrements(ThriftHBaseServiceHandler handler) throws Exception {
    List<Mutation> mutations = new ArrayList<>(1);
    mutations.add(new Mutation(false, columnAAname, valueEname, true));
    mutations.add(new Mutation(false, columnAname, valueEname, true));
    handler.mutateRow(tableAname, rowAname, mutations, null);
    handler.mutateRow(tableAname, rowBname, mutations, null);
    List<TIncrement> increments = new ArrayList<>(3);
    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));
    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));
    increments.add(new TIncrement(tableAname, rowBname, columnAAname, 7));
    int numIncrements = 60000;
    for (int i = 0; i < numIncrements; i++) {
        handler.increment(new TIncrement(tableAname, rowAname, columnAname, 2));
        handler.incrementRows(increments);
    }
    Thread.sleep(1000);
    long lv = handler.get(tableAname, rowAname, columnAname, null).get(0).value.getLong();
    // Wait on all increments being flushed
    while (handler.coalescer.getQueueSize() != 0) {
        Threads.sleep(10);
    }
    assertEquals((100 + (2 * numIncrements)), lv);
    lv = handler.get(tableAname, rowBname, columnAAname, null).get(0).value.getLong();
    assertEquals((100 + (3 * 7 * numIncrements)), lv);
    assertTrue(handler.coalescer.getSuccessfulCoalescings() > 0);
}
Also used : ArrayList(java.util.ArrayList) TIncrement(org.apache.hadoop.hbase.thrift.generated.TIncrement) BatchMutation(org.apache.hadoop.hbase.thrift.generated.BatchMutation) Mutation(org.apache.hadoop.hbase.thrift.generated.Mutation)

Example 4 with TIncrement

use of org.apache.hadoop.hbase.thrift.generated.TIncrement in project hbase by apache.

the class ThriftHBaseServiceHandler method increment.

@Override
public void increment(TIncrement tincrement) throws IOError, TException {
    if (tincrement.getRow().length == 0 || tincrement.getTable().length == 0) {
        throw new TException("Must supply a table and a row key; can't increment");
    }
    if (conf.getBoolean(COALESCE_INC_KEY, false)) {
        this.coalescer.queueIncrement(tincrement);
        return;
    }
    Table table = null;
    try {
        table = getTable(tincrement.getTable());
        Increment inc = ThriftUtilities.incrementFromThrift(tincrement);
        table.increment(inc);
    } catch (IOException e) {
        LOG.warn(e.getMessage(), e);
        throw getIOError(e);
    } finally {
        closeTable(table);
    }
}
Also used : TException(org.apache.thrift.TException) Table(org.apache.hadoop.hbase.client.Table) Increment(org.apache.hadoop.hbase.client.Increment) TIncrement(org.apache.hadoop.hbase.thrift.generated.TIncrement) DoNotRetryIOException(org.apache.hadoop.hbase.DoNotRetryIOException) IOException(java.io.IOException)

Aggregations

TIncrement (org.apache.hadoop.hbase.thrift.generated.TIncrement)4 ArrayList (java.util.ArrayList)2 Increment (org.apache.hadoop.hbase.client.Increment)2 BatchMutation (org.apache.hadoop.hbase.thrift.generated.BatchMutation)2 Mutation (org.apache.hadoop.hbase.thrift.generated.Mutation)2 IOException (java.io.IOException)1 DoNotRetryIOException (org.apache.hadoop.hbase.DoNotRetryIOException)1 Table (org.apache.hadoop.hbase.client.Table)1 TException (org.apache.thrift.TException)1