@Override public CellScanner build() { return new RtxCellSanner(sb.build()); }
@Override public CellScanner build() { String scanId = Integer.toHexString(Math.abs(Objects.hash(span, columns, txid))); log.trace("txid: {} scanId: {} scanner().over({}).fetch({}).build()", txid, scanId, Hex.encNonAscii(span), Hex.encNonAscii(columns)); if (TracingCellScanner.log.isTraceEnabled()) { return new TracingCellScanner(wrappedBuilder.build(), txid, scanId); } else { return wrappedBuilder.build(); } }
@Override public CellScanner build() { String scanId = Integer.toHexString(Math.abs(Objects.hash(span, columns, txid))); log.trace("txid: {} scanId: {} scanner().over({}).fetch({}).build()", txid, scanId, Hex.encNonAscii(span), Hex.encNonAscii(columns)); if (TracingCellScanner.log.isTraceEnabled()) { return new TracingCellScanner(wrappedBuilder.build(), txid, scanId); } else { return wrappedBuilder.build(); } }
private Set<String> getDerivedEdges() { Set<String> derivedEdges = new HashSet<>(); try (Snapshot snap = client.newSnapshot()) { snap.scanner().over(Span.prefix("d:")).build().stream().map(RowColumnValue::getsRow) .map(r -> r.substring(2)).forEach(derivedEdges::add); } return derivedEdges; }
private Set<String> getDerivedEdges() { Set<String> derivedEdges = new HashSet<>(); try (Snapshot snap = client.newSnapshot()) { snap.scanner().over(Span.prefix("d:")).build().stream().map(RowColumnValue::getsRow) .map(r -> r.substring(2)).forEach(derivedEdges::add); } return derivedEdges; }
protected void printSnapshot(Consumer<String> out) throws Exception { try (Snapshot s = client.newSnapshot()) { out.accept("== snapshot start =="); for (RowColumnValue rcv : s.scanner().build()) { out.accept(rcv.getRow() + " " + rcv.getColumn() + "\t" + rcv.getValue()); } out.accept("=== snapshot end ==="); } }
private static HashMap<String, String> toMap(TestTransaction tx) throws Exception { HashMap<String, String> map = new HashMap<>(); for (RowColumnValue rcv : tx.scanner().build()) { map.put(rcv.getRow().toString(), rcv.getValue().toString()); } return map; } }
/** * Prints Fluo table accessible using provided client * * @param client Fluo client to table */ public static void printFluoTable(FluoClient client) { try (Snapshot s = client.newSnapshot()) { System.out.println("== fluo start =="); for (RowColumnValue rcv : s.scanner().build()) { StringBuilder sb = new StringBuilder(); Hex.encNonAscii(sb, rcv.getRow()); sb.append(" "); Hex.encNonAscii(sb, rcv.getColumn(), " "); sb.append("\t"); Hex.encNonAscii(sb, rcv.getValue()); System.out.println(sb.toString()); } System.out.println("=== fluo end ==="); } }
@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); } }
@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); } }
/** * Print all statements in the repo for demo and diagnostic purposes. * @param fluoClient * @throws Exception */ public static void printTriples(final FluoClient fluoClient) throws Exception { try (Snapshot snapshot = fluoClient.newSnapshot()) { final CellScanner cscanner = snapshot.scanner().fetch(new Column("triples", "SPO")).build(); for (final RowColumnValue rcv : cscanner) { System.out.println("Triple: "+rcv.getsRow()); } } }
/** * Print all statements in the repo for demo and diagnostic purposes. * @param fluoClient * @throws Exception */ public static void printTriples(final FluoClient fluoClient) throws Exception { try (Snapshot snapshot = fluoClient.newSnapshot()) { final CellScanner cscanner = snapshot.scanner().fetch(new Column("triples", "SPO")).build(); for (final RowColumnValue rcv : cscanner) { System.out.println("Triple: "+rcv.getsRow()); } } }
@Test(expected = UnsupportedOperationException.class) public void testScan() { try (Transaction tx = client.newTransaction()) { tx.withReadLock().scanner().build(); } }
/** * Print all rows in the Fluo table for diagnostics. * </p> * Consider using {@code FluoITHelper.printFluoTable(FluoClient client)} instead. */ @Deprecated public static void printAll(final SnapshotBase sx) { final String FORMAT = "%-30s | %-10s | %-10s | %-40s\n"; System.out.println("Printing all tables. Showing unprintable bytes and braces as {ff} and {{} and {}} where ff is the value in hexadecimal."); System.out.format(FORMAT, "--Row--", "--Column Family--", "--Column Qual--", "--Value--"); final CellScanner cscanner = sx.scanner().build(); for (final RowColumnValue rcv : cscanner) { System.out.format(FORMAT, to_String(rcv.getRow()), to_String(rcv.getColumn().getFamily()), to_String(rcv.getColumn().getQualifier()), to_String(rcv.getValue())); } }
static void setAlias(TransactionBase tx, String node, String alias) { tx.set("r:" + node, new Column("node", "alias"), alias); CellScanner scanner = tx.scanner().over(Span.prefix("r:" + node + ":")).build(); for (RowColumnValue rcv : scanner) { String otherNode = rcv.getsRow().split(":")[2]; String[] aliases = rcv.getsValue().split(":"); if (aliases.length != 2) { throw new RuntimeException("bad alias " + rcv); } if (!alias.equals(aliases[0])) { tx.delete("d:" + aliases[0] + ":" + aliases[1], new Column("edge", node + ":" + otherNode)); tx.delete("d:" + aliases[1] + ":" + aliases[0], new Column("edge", otherNode + ":" + node)); addEdge(tx, node, otherNode, alias, aliases[1]); } } }
/** * Print all rows in the Fluo table for diagnostics. * </p> * Consider using {@code FluoITHelper.printFluoTable(FluoClient client)} instead. */ @Deprecated public static void printAll(final SnapshotBase sx) { final String FORMAT = "%-30s | %-10s | %-10s | %-40s\n"; System.out.println("Printing all tables. Showing unprintable bytes and braces as {ff} and {{} and {}} where ff is the value in hexadecimal."); System.out.format(FORMAT, "--Row--", "--Column Family--", "--Column Qual--", "--Value--"); final CellScanner cscanner = sx.scanner().build(); for (final RowColumnValue rcv : cscanner) { System.out.format(FORMAT, to_String(rcv.getRow()), to_String(rcv.getColumn().getFamily()), to_String(rcv.getColumn().getQualifier()), to_String(rcv.getValue())); } }
@Override public void process(TransactionBase tx, String row, Column col) throws Exception { // get previously calculated degree String degree = tx.gets(row, DEGREE); // calculate new degree String degree2 = "" + Iterables.size(tx.scanner().over(row, new Column("link")).build()); if (degree == null || !degree.equals(degree2)) { tx.set(row, DEGREE, degree2); // put new entry in degree index tx.set("IDEG" + degree2, new Column("node", row), ""); } if (degree != null) { // delete old degree in index tx.delete("IDEG" + degree, new Column("node", row)); } } }
public static void scanFluo(ScanOpts options, FluoConfiguration sConfig, PrintStream out) throws IOException { try (FluoClient client = FluoFactory.newClient(sConfig)) { try (Snapshot s = client.newSnapshot()) { Span span = getSpan(options); Collection<Column> columns = getColumns(options); CellScanner cellScanner = s.scanner().over(span).fetch(columns).build(); scan(options, out, cellScanner); } } }
@Override public void process(TransactionBase tx, Bytes row, Column col) throws Exception { CellScanner cellScanner = tx.scanner().over(row, new Column(Bytes.of("stats"))).build(); int sum = 0; for (RowColumnValue rcv : cellScanner) { sum += Integer.parseInt(rcv.getValue().toString()); tx.delete(row, rcv.getColumn()); } if (sum != 0) { sum += TestUtil.getOrDefault(tx, row.toString(), STAT_COUNT, 0); tx.set(row.toString(), STAT_COUNT, sum + ""); } } }
public Iterator<ExportEntry> getExportIterator(Bytes continueRow) { Span span; if (continueRow != null) { Span tmpSpan = Span.prefix(bucketRow); Span nextSpan = new Span(new RowColumn(continueRow, EXPORT_COL), true, tmpSpan.getEnd(), tmpSpan.isEndInclusive()); span = nextSpan; } else { span = Span.prefix(bucketRow); } CellScanner scanner = ttx.scanner().over(span).fetch(EXPORT_COL).build(); return new ExportIterator(scanner); }