public RowIterator(Closeable table, ResultScanner rows, byte[] columnFamilyBytes) { this.table = table; this.columnFamilyBytes = Arrays.copyOf(columnFamilyBytes, columnFamilyBytes.length); this.rows = Iterators.filter(rows.iterator(), result -> null != result && null != result.getRow()); }
@Override protected boolean isEndOfDataFromStorage() { if (cachedResultIterator != null && cachedResultIterator.hasNext()) { return false; } try { ResultScanner resultScanner = hbaseClient.scan(cursorKey, endScanKey); return !(resultScanner.iterator().hasNext()); } catch (Exception e) { throw new RuntimeException("Fail to scan from HBase state storage."); } }
public HBaseScanBasedIterator(Table table) { try { Scan scan = new Scan(); scan.setCaching(1000); ResultScanner scanner = table.getScanner(HBaseLookupRowEncoder.CF); scannerIterator = scanner.iterator(); } catch (IOException e) { logger.error("error when scan HBase", e); } }
void mockNoSnapshotSizes() throws IOException { Table quotaTable = mock(Table.class); ResultScanner scanner = mock(ResultScanner.class); when(conn.getTable(QuotaTableUtil.QUOTA_TABLE_NAME)).thenReturn(quotaTable); when(quotaTable.getScanner(any(Scan.class))).thenReturn(scanner); when(scanner.iterator()).thenReturn(Collections.<Result> emptyList().iterator()); } }
resultIterator = htable().getScanner(scan).iterator(); } catch (IOException e) { throw new RuntimeException(e);
final int rowsToSend = userRequestedLimit; servlet.getMetrics().incrementSucessfulScanRequests(1); final Iterator<Result> itr = results.iterator(); return new CellSetModelStream(new ArrayList<RowModel>() { @Override
private int getNumberOfRows(String keyPrefix, String value, Table ht) throws Exception { ResultScanner resultScanner = buildScanner(keyPrefix, value, ht); Iterator<Result> scanner = resultScanner.iterator(); int numberOfResults = 0; while (scanner.hasNext()) { Result result = scanner.next(); System.out.println("Got back key: " + Bytes.toString(result.getRow())); for (Cell kv : result.rawCells()) { System.out.println("kv=" + kv.toString() + ", " + Bytes.toString(CellUtil.cloneValue(kv))); } numberOfResults++; } return numberOfResults; }
private void verify(Scan scan) throws IOException { ResultScanner scanner = htable.getScanner(scan); Iterator<Result> it = scanner.iterator(); /* Then */ int count = 0; try { while (it.hasNext()) { it.next(); count++; } } finally { scanner.close(); } assertEquals(expected, count); } /**
private void deleteColumns(Table ht, String value, String keyPrefix) throws IOException { ResultScanner scanner = buildScanner(keyPrefix, value, ht); Iterator<Result> it = scanner.iterator(); int count = 0; while (it.hasNext()) { Result result = it.next(); Delete delete = new Delete(result.getRow()); delete.addColumn(Bytes.toBytes("trans-tags"), Bytes.toBytes("qual2")); ht.delete(delete); count++; } assertEquals("Did not perform correct number of deletes", 3, count); }
@Test public void testMissingAllColumns() throws IOException { when(chore.fetchSnapshotsFromQuotaTable()).thenCallRealMethod(); ResultScanner scanner = mock(ResultScanner.class); Table quotaTable = mock(Table.class); when(conn.getTable(QuotaUtil.QUOTA_TABLE_NAME)).thenReturn(quotaTable); when(quotaTable.getScanner(any(Scan.class))).thenReturn(scanner); List<Result> results = new ArrayList<>(); results.add(Result.create(Collections.emptyList())); when(scanner.iterator()).thenReturn(results.iterator()); try { chore.fetchSnapshotsFromQuotaTable(); fail("Expected an IOException, but did not receive one."); } catch (IOException e) { // Expected an error because we had no cells in the row. // This should only happen due to programmer error. } }
@Test public void testMissingDesiredColumn() throws IOException { when(chore.fetchSnapshotsFromQuotaTable()).thenCallRealMethod(); ResultScanner scanner = mock(ResultScanner.class); Table quotaTable = mock(Table.class); when(conn.getTable(QuotaUtil.QUOTA_TABLE_NAME)).thenReturn(quotaTable); when(quotaTable.getScanner(any(Scan.class))).thenReturn(scanner); List<Result> results = new ArrayList<>(); // Give a column that isn't the one we want Cell c = new KeyValue(toBytes("t:inviolation"), toBytes("q"), toBytes("s"), new byte[0]); results.add(Result.create(Collections.singletonList(c))); when(scanner.iterator()).thenReturn(results.iterator()); try { chore.fetchSnapshotsFromQuotaTable(); fail("Expected an IOException, but did not receive one."); } catch (IOException e) { // Expected an error because we were missing the column we expected in this row. // This should only happen due to programmer error. } }
@Test public void testParsingError() throws IOException { when(chore.fetchSnapshotsFromQuotaTable()).thenCallRealMethod(); ResultScanner scanner = mock(ResultScanner.class); Table quotaTable = mock(Table.class); when(conn.getTable(QuotaUtil.QUOTA_TABLE_NAME)).thenReturn(quotaTable); when(quotaTable.getScanner(any(Scan.class))).thenReturn(scanner); List<Result> results = new ArrayList<>(); Cell c = new KeyValue(toBytes("t:inviolation"), toBytes("u"), toBytes("v"), new byte[0]); results.add(Result.create(Collections.singletonList(c))); when(scanner.iterator()).thenReturn(results.iterator()); try { chore.fetchSnapshotsFromQuotaTable(); fail("Expected an IOException, but did not receive one."); } catch (IOException e) { // We provided a garbage serialized protobuf message (empty byte array), this should // in turn throw an IOException } } }
/** * Test RemoteHable.Scanner.iterator method */ @Test public void testIteratorScaner() throws IOException { List<Put> puts = new ArrayList<>(4); Put put = new Put(ROW_1); put.addColumn(COLUMN_1, QUALIFIER_1, VALUE_1); puts.add(put); put = new Put(ROW_2); put.addColumn(COLUMN_1, QUALIFIER_1, VALUE_1); puts.add(put); put = new Put(ROW_3); put.addColumn(COLUMN_1, QUALIFIER_1, VALUE_1); puts.add(put); put = new Put(ROW_4); put.addColumn(COLUMN_1, QUALIFIER_1, VALUE_1); puts.add(put); remoteTable.put(puts); ResultScanner scanner = remoteTable.getScanner(new Scan()); Iterator<Result> iterator = scanner.iterator(); assertTrue(iterator.hasNext()); int counter = 0; while (iterator.hasNext()) { iterator.next(); counter++; } assertEquals(4, counter); }
public void testIteratorScanner(Connection connection, String tableName) throws IOException { createTable(thriftAdmin, tableName); try (Table table = connection.getTable(TableName.valueOf(tableName))){ List<Put> puts = new ArrayList<>(4); Put put = new Put(ROW_1); put.addColumn(FAMILYA, QUALIFIER_1, VALUE_1); puts.add(put); put = new Put(ROW_2); put.addColumn(FAMILYA, QUALIFIER_1, VALUE_1); puts.add(put); put = new Put(ROW_3); put.addColumn(FAMILYA, QUALIFIER_1, VALUE_1); puts.add(put); put = new Put(ROW_4); put.addColumn(FAMILYA, QUALIFIER_1, VALUE_1); puts.add(put); table.put(puts); Scan scan = new Scan(); scan.setCaching(1); ResultScanner scanner = table.getScanner(scan); Iterator<Result> iterator = scanner.iterator(); assertTrue(iterator.hasNext()); int counter = 0; while (iterator.hasNext()) { iterator.next(); counter++; } assertEquals(4, counter); } }
scan.setConsistency(Consistency.TIMELINE); ResultScanner scanner = table.getScanner(scan); Iterator<Result> iter = scanner.iterator(); iter.next(); Assert.assertTrue(((ClientScanner)scanner).isAnyRPCcancelled());
scan.setCaching(1); ResultScanner scanner = table.getScanner(scan); Iterator<Result> iterator = scanner.iterator(); assertTrue(iterator.hasNext()); int counter = 0;
try { table = util.getConnection().getTable(tableName); Iterator<Result> resultsIt = table.getScanner(scan).iterator(); Iterator<KeyValue> expectedIt = simple_expected.iterator(); while (resultsIt.hasNext() && expectedIt.hasNext()) {
private void testScanWithFilters(Connection connection, String tableName) throws IOException { createTable(thriftAdmin, tableName); try (Table table = connection.getTable(TableName.valueOf(tableName))){ FilterList filterList = new FilterList(); PrefixFilter prefixFilter = new PrefixFilter(Bytes.toBytes("testrow")); ColumnValueFilter columnValueFilter = new ColumnValueFilter(FAMILYA, QUALIFIER_1, CompareOperator.EQUAL, VALUE_1); filterList.addFilter(prefixFilter); filterList.addFilter(columnValueFilter); Scan scan = new Scan(); scan.setMaxVersions(2); ResultScanner scanner = table.getScanner(scan); Iterator<Result> iterator = scanner.iterator(); assertTrue(iterator.hasNext()); int counter = 0; while (iterator.hasNext()) { Result result = iterator.next(); counter += result.size(); } assertEquals(2, counter); } }
scan.setConsistency(consistency); ResultScanner scanner = table.getScanner(scan); Iterator<Result> iter = scanner.iterator();