private static Predicate<RowColumnValue> createColumnFilter(Collection<Column> allColumns) { if (allColumns.isEmpty()) { return rcv -> true; } else { Set<Bytes> families = allColumns.stream().filter(col -> !col.isQualifierSet()) .map(col -> col.getFamily()).collect(toSet()); Set<Column> columns = allColumns.stream().filter(col -> col.isQualifierSet()).collect(toSet()); if (families.isEmpty()) { return rcv -> columns.contains(rcv.getColumn()); } else if (columns.isEmpty()) { return rcv -> families.contains(rcv.getColumn().getFamily()); } else { return rcv -> families.contains(rcv.getColumn().getFamily()) || columns.contains(rcv.getColumn()); } } }
private static void scan(ScanOpts options, PrintStream out, CellScanner cellScanner) { Function<Bytes, String> encoder = getEncoder(options); if (options.exportAsJson) { generateJson(cellScanner, encoder, out); } else { for (RowColumnValue rcv : cellScanner) { out.print(encoder.apply(rcv.getRow())); out.print(' '); out.print(encoder.apply(rcv.getColumn().getFamily())); out.print(' '); out.print(encoder.apply(rcv.getColumn().getQualifier())); out.print(' '); out.print(encoder.apply(rcv.getColumn().getVisibility())); out.print("\t"); out.print(encoder.apply(rcv.getValue())); out.println(); if (out.checkError()) { break; } } } }
public static String encNonAscii(RowColumnValue rcv, String sep) { StringBuilder sb = new StringBuilder(); encNonAscii(sb, rcv.getRow()); sb.append(sep); encNonAscii(sb, rcv.getColumn(), sep); sb.append(sep); encNonAscii(sb, rcv.getValue()); return sb.toString(); }
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 ==="); } }
/** * Generate JSON format as result of the scan. * * @since 1.2 */ private static void generateJson(CellScanner cellScanner, Function<Bytes, String> encoder, PrintStream out) throws JsonIOException { Gson gson = new GsonBuilder().serializeNulls().setDateFormat(DateFormat.LONG) .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).setVersion(1.0) .create(); Map<String, String> json = new LinkedHashMap<>(); for (RowColumnValue rcv : cellScanner) { json.put(FLUO_ROW, encoder.apply(rcv.getRow())); json.put(FLUO_COLUMN_FAMILY, encoder.apply(rcv.getColumn().getFamily())); json.put(FLUO_COLUMN_QUALIFIER, encoder.apply(rcv.getColumn().getQualifier())); json.put(FLUO_COLUMN_VISIBILITY, encoder.apply(rcv.getColumn().getVisibility())); json.put(FLUO_VALUE, encoder.apply(rcv.getValue())); gson.toJson(json, out); out.append("\n"); if (out.checkError()) { break; } } out.flush(); }
public FluoMutationGenerator(RowColumnValue rcv) { this(rcv.getRow()); put(rcv.getColumn(), rcv.getValue()); }
@Override public RowColumnValue next() { RowColumnValue rcv = iter.next(); txLog.filteredAdd(LogEntry.newGet(rcv.getRow(), rcv.getColumn(), rcv.getValue()), filter); return rcv; }
public FluoMutationGenerator(RowColumnValue rcv) { this(rcv.getRow()); put(rcv.getColumn(), rcv.getValue()); }
/** * 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 ==="); } }
/** * 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())); } }
/** * 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())); } }
retval |= diff("fluo fam", rcv.getColumn().getFamily(), actualRcv.getColumn().getFamily()); retval |= diff("fluo qual", rcv.getColumn().getQualifier(), actualRcv.getColumn().getQualifier()); retval |= diff("fluo val", rcv.getValue(), actualRcv.getValue()); rcv.getColumn().getsFamily(), rcv.getColumn().getsQualifier(), rcv.getsValue()); return false;
/** * Set the row, column, and value * * @return this */ public FluoKeyValueGenerator set(RowColumnValue rcv) { setRow(rcv.getRow()); setColumn(rcv.getColumn()); setValue(rcv.getValue()); return this; }
/** * Set the row, column, and value * * @return this */ public FluoKeyValueGenerator set(RowColumnValue rcv) { setRow(rcv.getRow()); setColumn(rcv.getColumn()); setValue(rcv.getValue()); return this; }
@Test public void testSame() { Set<RowColumnValue> expected = genData(); Column col1 = new Column("f1", "q1"); Column col2 = new Column("f2", "q3"); HashSet<RowColumnValue> expectedC = new HashSet<>(); Iterables.addAll(expectedC, Iterables.filter(expected, rcv -> rcv.getColumn().equals(col1) || rcv.getColumn().equals(col2))); Assert.assertEquals(3, expectedC.size()); try (Snapshot snap = client.newSnapshot()) { CellScanner scanner = snap.scanner().fetch(col1, col2).build(); HashSet<RowColumnValue> actual = new HashSet<>(); Bytes prevRow = null; for (RowColumnValue rcv : scanner) { actual.add(rcv); Column c = rcv.getColumn(); Assert.assertTrue((col1.equals(c) && col1 == c) || (col2.equals(c) && col2 == c)); if (col2.equals(c)) { Assert.assertEquals(Bytes.of("r1"), rcv.getRow()); Assert.assertSame(rcv.getRow(), prevRow); } prevRow = rcv.getRow(); } Assert.assertEquals(expectedC, actual); } }
private Set<RowColumnValue> genData() { Set<RowColumnValue> expected = new HashSet<>(); expected.add(new RowColumnValue("r1", new Column("f1", "q1"), "v1")); expected.add(new RowColumnValue("r1", new Column("f2", "q3"), "v2")); expected.add(new RowColumnValue("r2", new Column("f1", "q1"), "v3")); expected.add(new RowColumnValue("r2", new Column("f1", "q2"), "v4")); expected.add(new RowColumnValue("r4", new Column("f2", "q5"), "v5")); Assert.assertEquals(5, expected.size()); try (Transaction tx = client.newTransaction()) { for (RowColumnValue rcv : expected) { tx.set(rcv.getRow(), rcv.getColumn(), rcv.getValue()); } tx.commit(); } return expected; } }
Map.Entry<Key, Value> kvEntry = scanIter.next(); Key key = kvEntry.getKey(); Column col = rcv.getColumn();
@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 + ""); } } }