@Override public ScannerBuilder over(Span span) { sb = sb.over(span); return this; }
@Override public RowScannerBuilder byRow() { return new RtxRowScannerBuilder(sb.byRow()); }
@Override public ScannerBuilder fetch(Collection<Column> columns) { sb = sb.fetch(columns); return this; }
private BigInteger countBindingSets(final SnapshotBase sx, final String nodeId, final Column bindingSetColumn) { checkNotNull(sx); checkNotNull(nodeId); checkNotNull(bindingSetColumn); NodeType type = NodeType.fromNodeId(nodeId).get(); Bytes prefixBytes = Bytes.of(type.getNodeTypePrefix()); // Limit the scan to the binding set column and node id. final RowScanner rows = sx.scanner().over(Span.prefix(prefixBytes)).fetch(bindingSetColumn).byRow().build(); BigInteger count = BigInteger.valueOf(0L); for (ColumnScanner columns : rows) { String row = BindingSetRow.makeFromShardedRow(prefixBytes, columns.getRow()).getNodeId(); if (row.equals(nodeId)) { count = count.add(BigInteger.ONE); } } return count; }
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); } } }
RowColumnValue rcv4 = new RowColumnValue("r2", c2, "v4"); CellScanner scanner1 = snap.scanner().build(); assertEqual(scanner1, rcv1, rcv2, rcv3, rcv4); CellScanner scanner2 = snap.scanner().over("r1").build(); assertEqual(scanner2, rcv1, rcv2); CellScanner scanner3 = snap.scanner().over("r1").fetch(c1).build(); assertEqual(scanner3, rcv1); CellScanner scanner4 = snap.scanner().fetch(c1).build(); assertEqual(scanner4, rcv1, rcv3); RowScanner rowScanner1 = snap.scanner().byRow().build(); assertEqual(rowScanner1, "r1", c1, "v1", c2, "v2", "r2", c1, "v3", c2, "v4"); RowScanner rowScanner2 = snap.scanner().over("r1").byRow().build(); assertEqual(rowScanner2, "r1", c1, "v1", c2, "v2"); RowScanner rowScanner3 = snap.scanner().over("r1").fetch(c1).byRow().build(); assertEqual(rowScanner3, "r1", c1, "v1"); RowScanner rowScanner4 = snap.scanner().fetch(c1).byRow().build(); assertEqual(rowScanner4, "r1", c1, "v1", "r2", c1, "v3");
/** * 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()); } } }
@Override public CellScanner build() { return new RtxCellSanner(sb.build()); }
private List<Bytes> getFluoTableEntries(final FluoClient fluoClient) { try (Snapshot snapshot = fluoClient.newSnapshot()) { final List<Bytes> rows = new ArrayList<>(); final RowScanner rscanner = snapshot.scanner().over(Span.prefix("")).byRow().build(); for(final ColumnScanner cscanner: rscanner) { rows.add(cscanner.getRow()); } return rows; } } }
/** * Get the number of RDF Statements that have been loaded into the Fluo app * that have not been processed yet. * * @param fluo - The connection to Fluo that will be used to fetch the metadata. (not null) * @return The number of RDF Statements that have been loaded into the Fluo * app that have not been processed yet. */ public BigInteger countStatements(final FluoClient fluo) { checkNotNull(fluo); try(Snapshot sx = fluo.newSnapshot()) { // Limit the scan to the Triples binding set column. final Iterator<ColumnScanner> rows = sx.scanner().fetch(FluoQueryColumns.TRIPLES).byRow().build().iterator(); BigInteger count = BigInteger.valueOf(0L); while(rows.hasNext()) { rows.next(); count = count.add( BigInteger.ONE ); } return count; } } }
@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)); } rowIterator = ti.scanner().over(span).fetch(columns).byRow().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); } }
/** * 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()); } } }
@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 List<Bytes> getFluoTableEntries(final FluoClient fluoClient) { try (Snapshot snapshot = fluoClient.newSnapshot()) { final List<Bytes> rows = new ArrayList<>(); final RowScanner rscanner = snapshot.scanner().over(Span.prefix("")).byRow().build(); for (final ColumnScanner cscanner : rscanner) { rows.add(cscanner.getRow()); } return rows; } }
/** * Get the number of RDF Statements that have been loaded into the Fluo app * that have not been processed yet. * * @param fluo - The connection to Fluo that will be used to fetch the metadata. (not null) * @return The number of RDF Statements that have been loaded into the Fluo * app that have not been processed yet. */ public BigInteger countStatements(final FluoClient fluo) { checkNotNull(fluo); try(Snapshot sx = fluo.newSnapshot()) { // Limit the scan to the Triples binding set column. final Iterator<ColumnScanner> rows = sx.scanner().fetch(FluoQueryColumns.TRIPLES).byRow().build().iterator(); BigInteger count = BigInteger.valueOf(0L); while(rows.hasNext()) { rows.next(); count = count.add( BigInteger.ONE ); } return count; } } }
@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)); } rowIterator = ti.scanner().over(span).fetch(columns).byRow().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); } }