Search in sources :

Example 61 with Row

use of com.google.cloud.bigtable.data.v2.models.Row in project java-bigtable-hbase by googleapis.

the class TestRowAdapter method adaptResponse_oneRow.

@Test
public void adaptResponse_oneRow() {
    String family1 = "family1";
    byte[] family1Bytes = Bytes.toBytes(family1);
    String family2 = "family2";
    byte[] family2Bytes = Bytes.toBytes(family2);
    byte[] qualifier1 = "qualifier1".getBytes();
    byte[] qualifier2 = "qualifier2".getBytes();
    byte[] value1 = "value1".getBytes();
    byte[] value2 = "value2".getBytes();
    byte[] value3 = "value3".getBytes();
    byte[] value4 = "value4".getBytes();
    byte[] value5 = "value5".getBytes();
    ByteString key = ByteString.copyFromUtf8("key");
    final long ts1Micros = 54321L;
    final long ts2Micros = 12345L;
    final long ts1Millis = ts1Micros / 1000;
    final long ts2Millis = ts2Micros / 1000;
    List<String> emptyLabelList = Collections.emptyList();
    ImmutableList<RowCell> rowCells = ImmutableList.of(// First cell.
    RowCell.create(family1, ByteString.copyFrom(qualifier1), ts1Micros, emptyLabelList, ByteString.copyFrom(value1)), // Same family, same column, but different timestamps.
    RowCell.create(family1, ByteString.copyFrom(qualifier1), ts2Micros, emptyLabelList, ByteString.copyFrom(value2)), // Same family, same timestamp, but different column.
    RowCell.create(family1, ByteString.copyFrom(qualifier2), ts1Micros, emptyLabelList, ByteString.copyFrom(value3)), // Same column, same timestamp, but different family.
    RowCell.create(family2, ByteString.copyFrom(qualifier1), ts1Micros, emptyLabelList, ByteString.copyFrom(value4)), // Same timestamp, but different family and column.
    RowCell.create(family2, ByteString.copyFrom(qualifier2), ts1Micros, emptyLabelList, ByteString.copyFrom(value5)), // Contains label, should be ignored.
    RowCell.create(family1, ByteString.copyFrom(qualifier1), ts2Micros, Collections.singletonList("label"), ByteString.copyFrom(value1)));
    Row row = Row.create(key, rowCells);
    Result result = instance.adaptResponse(row);
    assertEquals(5, result.rawCells().length);
    // The duplicate row and label cells have been removed. The timestamp micros get converted to
    // millisecond accuracy.
    byte[] keyArray = ByteStringer.extract(key);
    org.apache.hadoop.hbase.Cell[] expectedCells = new org.apache.hadoop.hbase.Cell[] { new com.google.cloud.bigtable.hbase.adapters.read.RowCell(keyArray, family1Bytes, qualifier1, ts1Millis, value1), new com.google.cloud.bigtable.hbase.adapters.read.RowCell(keyArray, family1Bytes, qualifier1, ts2Millis, value2), new com.google.cloud.bigtable.hbase.adapters.read.RowCell(keyArray, family1Bytes, qualifier2, ts1Millis, value3), new com.google.cloud.bigtable.hbase.adapters.read.RowCell(keyArray, family2Bytes, qualifier1, ts1Millis, value4), new com.google.cloud.bigtable.hbase.adapters.read.RowCell(keyArray, family2Bytes, qualifier2, ts1Millis, value5) };
    assertArrayEquals(expectedCells, result.rawCells());
}
Also used : ByteString(com.google.protobuf.ByteString) RowCell(com.google.cloud.bigtable.data.v2.models.RowCell) ByteString(com.google.protobuf.ByteString) Result(org.apache.hadoop.hbase.client.Result) Row(com.google.cloud.bigtable.data.v2.models.Row) RowCell(com.google.cloud.bigtable.data.v2.models.RowCell) Test(org.junit.Test)

Example 62 with Row

use of com.google.cloud.bigtable.data.v2.models.Row in project java-bigtable-hbase by googleapis.

the class TestRowAdapter method adaptResponse_emptyRow.

@Test
public void adaptResponse_emptyRow() {
    Row row = Row.create(ByteString.copyFromUtf8("key"), Collections.<RowCell>emptyList());
    Result result = instance.adaptResponse(row);
    assertEquals(0, result.rawCells().length);
}
Also used : Row(com.google.cloud.bigtable.data.v2.models.Row) Result(org.apache.hadoop.hbase.client.Result) Test(org.junit.Test)

Example 63 with Row

use of com.google.cloud.bigtable.data.v2.models.Row in project java-bigtable-hbase by googleapis.

the class TestBigtableTable method getScanner_withBigtableResultScannerAdapter.

@Test
public void getScanner_withBigtableResultScannerAdapter() throws IOException {
    when(mockBigtableDataClient.readRows(isA(Query.class))).thenReturn(mockResultScanner);
    // A row with no matching label. In case of {@link BigtableResultScannerAdapter} the result is
    // non-null.
    Result expected = Result.create(ImmutableList.<Cell>of(new RowCell(Bytes.toBytes("row_key"), Bytes.toBytes("family_name"), Bytes.toBytes("q_name"), 0, ByteString.EMPTY.toByteArray(), Collections.singletonList("label-in")), new RowCell(Bytes.toBytes("row_key"), Bytes.toBytes("family_name"), Bytes.toBytes("q_name"), 0, Bytes.toBytes("value"))));
    when(mockResultScanner.next()).thenReturn(expected);
    QualifierFilter filter = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("x")));
    Scan scan = new Scan();
    scan.setFilter(filter);
    org.apache.hadoop.hbase.client.ResultScanner resultScanner = table.getScanner(scan);
    Result result = resultScanner.next();
    assertEquals("row_key", new String(result.getRow()));
    List<org.apache.hadoop.hbase.Cell> cells = result.getColumnCells("family_name".getBytes(), "q_name".getBytes());
    // HBase ResultScanner now allows cells with labels
    assertEquals(2, cells.size());
    assertEquals("", new String(CellUtil.cloneValue(cells.get(0))));
    assertEquals("value", new String(CellUtil.cloneValue(cells.get(1))));
    verify(mockBigtableDataClient).readRows(isA(Query.class));
    verify(mockResultScanner).next();
}
Also used : Query(com.google.cloud.bigtable.data.v2.models.Query) RowCell(com.google.cloud.bigtable.hbase.adapters.read.RowCell) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) ByteString(com.google.protobuf.ByteString) BinaryComparator(org.apache.hadoop.hbase.filter.BinaryComparator) Result(org.apache.hadoop.hbase.client.Result) QualifierFilter(org.apache.hadoop.hbase.filter.QualifierFilter) ResultScanner(org.apache.hadoop.hbase.client.ResultScanner) Scan(org.apache.hadoop.hbase.client.Scan) Cell(org.apache.hadoop.hbase.Cell) RowCell(com.google.cloud.bigtable.hbase.adapters.read.RowCell) Test(org.junit.Test)

Example 64 with Row

use of com.google.cloud.bigtable.data.v2.models.Row in project java-bigtable-hbase by googleapis.

the class TestBigtableTable method getScanner_withBigtableWhileMatchResultScannerAdapter.

@Test
public void getScanner_withBigtableWhileMatchResultScannerAdapter() throws IOException {
    // A row with no matching label. In case of {@link BigtableWhileMatchResultScannerAdapter} the
    // result is null.
    Result row = Result.create(ImmutableList.<Cell>of(new RowCell(Bytes.toBytes("row_key"), Bytes.toBytes(""), Bytes.toBytes("q_name"), 0, ByteString.EMPTY.toByteArray(), Collections.singletonList("label-in")), new RowCell(Bytes.toBytes("row_key"), Bytes.toBytes(""), Bytes.toBytes("q_name"), 0, Bytes.toBytes("value"))));
    when(mockResultScanner.next()).thenReturn(row);
    QualifierFilter filter = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("x")));
    WhileMatchFilter whileMatchFilter = new WhileMatchFilter(filter);
    Scan scan = new Scan();
    scan.setFilter(whileMatchFilter);
    org.apache.hadoop.hbase.client.ResultScanner resultScanner = table.getScanner(scan);
    assertNull(resultScanner.next());
    verify(mockBigtableDataClient).readRows(isA(Query.class));
    verify(mockResultScanner).next();
}
Also used : Query(com.google.cloud.bigtable.data.v2.models.Query) ResultScanner(org.apache.hadoop.hbase.client.ResultScanner) WhileMatchFilter(org.apache.hadoop.hbase.filter.WhileMatchFilter) RowCell(com.google.cloud.bigtable.hbase.adapters.read.RowCell) Scan(org.apache.hadoop.hbase.client.Scan) BinaryComparator(org.apache.hadoop.hbase.filter.BinaryComparator) Result(org.apache.hadoop.hbase.client.Result) QualifierFilter(org.apache.hadoop.hbase.filter.QualifierFilter) Test(org.junit.Test)

Example 65 with Row

use of com.google.cloud.bigtable.data.v2.models.Row in project java-bigtable-hbase by googleapis.

the class SampledRowKeysAdapter method adaptResponse.

/**
 * adaptResponse.
 *
 * @param responses a {@link java.util.List} object.
 * @return a {@link java.util.List} object.
 */
public List<HRegionLocation> adaptResponse(List<KeyOffset> responses) {
    List<HRegionLocation> regions = new ArrayList<>();
    // Starting by the first possible row, iterate over the sorted sampled row keys and create
    // regions.
    byte[] startKey = HConstants.EMPTY_START_ROW;
    for (KeyOffset response : responses) {
        byte[] endKey = response.getKey().toByteArray();
        // Avoid empty regions.
        if (Bytes.equals(startKey, endKey)) {
            continue;
        }
        regions.add(createRegionLocation(startKey, endKey));
        startKey = endKey;
    }
    // Create one last region if the last region doesn't reach the end or there are no regions.
    byte[] endKey = HConstants.EMPTY_END_ROW;
    if (regions.isEmpty() || !Bytes.equals(startKey, endKey)) {
        regions.add(createRegionLocation(startKey, endKey));
    }
    return regions;
}
Also used : HRegionLocation(org.apache.hadoop.hbase.HRegionLocation) KeyOffset(com.google.cloud.bigtable.data.v2.models.KeyOffset) ArrayList(java.util.ArrayList)

Aggregations

Row (com.google.cloud.bigtable.data.v2.models.Row)71 Test (org.junit.Test)64 Query (com.google.cloud.bigtable.data.v2.models.Query)34 ByteString (com.google.protobuf.ByteString)28 ReadModifyWriteRow (com.google.cloud.bigtable.data.v2.models.ReadModifyWriteRow)26 BigtableDataClient (com.google.cloud.bigtable.data.v2.BigtableDataClient)19 RowCell (com.google.cloud.bigtable.data.v2.models.RowCell)19 ReadRowsRequest (com.google.bigtable.v2.ReadRowsRequest)13 Filter (com.google.cloud.bigtable.data.v2.models.Filters.Filter)11 IOException (java.io.IOException)10 RowMutation (com.google.cloud.bigtable.data.v2.models.RowMutation)9 ServerStreamingStashCallable (com.google.cloud.bigtable.gaxx.testing.FakeStreamingApi.ServerStreamingStashCallable)7 Put (org.apache.hadoop.hbase.client.Put)7 DefaultRowAdapter (com.google.cloud.bigtable.data.v2.models.DefaultRowAdapter)6 MutateRowRequest (com.google.bigtable.v2.MutateRowRequest)5 Mutation (com.google.bigtable.v2.Mutation)5 SetCell (com.google.bigtable.v2.Mutation.SetCell)5 NotFoundException (com.google.api.gax.rpc.NotFoundException)4 ReadRowsResponse (com.google.bigtable.v2.ReadRowsResponse)4 ConditionalRowMutation (com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation)4