public ExportIterator(CellScanner scanner) { this.rowIter = scanner.iterator(); }
@Override public Iterator<RowColumnValue> iterator() { return new RtxIterator(scanner.iterator()); }
@Override public Iterator<RowColumnValue> iterator() { return Iterators.transform(wrappedScanner.iterator(), rcv -> { log.trace("txid: {} scanId: {} next()-> {} {}", txid, scanId, Hex.encNonAscii(rcv.getRowColumn()), Hex.encNonAscii(rcv.getValue())); return rcv; }); } }
@Override public Iterator<RowColumnValue> iterator() { return Iterators.transform(wrappedScanner.iterator(), rcv -> { log.trace("txid: {} scanId: {} next()-> {} {}", txid, scanId, Hex.encNonAscii(rcv.getRowColumn()), Hex.encNonAscii(rcv.getValue())); return rcv; }); } }
@Test public void testMultipleIteratorsFromSameIterable() { Set<RowColumnValue> expected = genData(); try (Snapshot snap = client.newSnapshot()) { CellScanner cellScanner = snap.scanner().build(); // grab two iterators from same iterable and iterator over them in interleaved fashion Iterator<RowColumnValue> iter1 = cellScanner.iterator(); Iterator<RowColumnValue> iter2 = cellScanner.iterator(); HashSet<RowColumnValue> actual1 = new HashSet<>(); HashSet<RowColumnValue> actual2 = new HashSet<>(); while (iter1.hasNext()) { Assert.assertTrue(iter2.hasNext()); actual1.add(iter1.next()); actual2.add(iter2.next()); } Assert.assertFalse(iter2.hasNext()); Assert.assertEquals(expected, actual1); Assert.assertEquals(expected, actual2); } }
@Override public void initialize(InputSplit split, TaskAttemptContext context) throws IOException, InterruptedException { try { ByteArrayInputStream bais = new ByteArrayInputStream( context.getConfiguration().get(PROPS_CONF_KEY).getBytes(StandardCharsets.UTF_8)); env = new Environment(new FluoConfiguration(bais)); ti = new TransactionImpl(env, context.getConfiguration().getLong(TIMESTAMP_CONF_KEY, -1)); // TODO this uses non public Accumulo API! RangeInputSplit ris = (RangeInputSplit) split; Span span = SpanUtil.toSpan(ris.getRange()); HashSet<Column> columns = new HashSet<>(); for (String fam : context.getConfiguration().getStrings(FAMS_CONF_KEY, new String[0])) { columns.add(new Column(fam)); } cellIterator = ti.scanner().over(span).fetch(columns).build().iterator(); } catch (Exception e) { throw new IOException(e); } }
@Override public void initialize(InputSplit split, TaskAttemptContext context) throws IOException, InterruptedException { try { ByteArrayInputStream bais = new ByteArrayInputStream( context.getConfiguration().get(PROPS_CONF_KEY).getBytes(StandardCharsets.UTF_8)); env = new Environment(new FluoConfiguration(bais)); ti = new TransactionImpl(env, context.getConfiguration().getLong(TIMESTAMP_CONF_KEY, -1)); // TODO this uses non public Accumulo API! RangeInputSplit ris = (RangeInputSplit) split; Span span = SpanUtil.toSpan(ris.getRange()); HashSet<Column> columns = new HashSet<>(); for (String fam : context.getConfiguration().getStrings(FAMS_CONF_KEY, new String[0])) { columns.add(new Column(fam)); } cellIterator = ti.scanner().over(span).fetch(columns).build().iterator(); } catch (Exception e) { throw new IOException(e); } }
Iterator<RowColumnValue> fluoIter = s.scanner().build().iterator(); Iterator<RowColumnValue> rcvIter = expected.iterator();
tx.scanner().over(Span.prefix(rowBuilder.toBytes())).build().iterator();
Iterator<RowColumnValue> iter = tx.scanner().over(span).fetch(UPDATE_COL).build().iterator();