/** * Export an SSTable and write the resulting JSON to standard out. * * @param desc the descriptor of the sstable to read from * @param excludes keys to exclude from export * @param metadata Metadata to print keys in a proper format * @throws IOException on failure to read/write SSTable/standard out */ public static void export(Descriptor desc, String[] excludes, CFMetaData metadata) throws IOException { export(desc, System.out, excludes, metadata); }
private static void serializeRow(DeletionInfo deletionInfo, Iterator<OnDiskAtom> atoms, CFMetaData metadata, DecoratedKey key, PrintStream out) { out.print("{"); writeKey(out, "key"); writeJSON(out, metadata.getKeyValidator().getString(key.getKey())); out.print(",\n"); if (!deletionInfo.isLive()) { out.print(" "); writeKey(out, "metadata"); out.print("{"); writeKey(out, "deletionInfo"); writeJSON(out, deletionInfo.getTopLevelDeletion()); out.print("}"); out.print(",\n"); } out.print(" "); writeKey(out, "cells"); out.print("["); while (atoms.hasNext()) { writeJSON(out, serializeAtom(atoms.next(), metadata)); if (atoms.hasNext()) out.print(",\n "); } out.print("]"); out.print("}"); }
private static List<Object> serializeAtom(OnDiskAtom atom, CFMetaData cfMetaData) { if (atom instanceof Cell) { return serializeColumn((Cell) atom, cfMetaData); } else { assert atom instanceof RangeTombstone; RangeTombstone rt = (RangeTombstone) atom; ArrayList<Object> serializedColumn = new ArrayList<Object>(); serializedColumn.add(cfMetaData.comparator.getString(rt.min)); serializedColumn.add(cfMetaData.comparator.getString(rt.max)); serializedColumn.add(rt.data.markedForDeleteAt); serializedColumn.add("t"); serializedColumn.add(rt.data.localDeletionTime); return serializedColumn; } }
printUsage(); System.exit(1); printUsage(); System.exit(1); try CFMetaData metadata = metadataFromSSTable(desc); if (cmd.hasOption(ENUMERATE_KEYS_OPTION)) JsonTransformer.keysToJson(null, iterToStream(iter), cmd.hasOption(RAW_TIMESTAMPS), metadata, Stream<UnfilteredRowIterator> partitions = iterToStream(currentScanner).filter(i -> excludes.isEmpty() || !excludes.contains(metadata.getKeyValidator().getString(i.partitionKey().getKey())) );
outs.println(","); serializeRow(row, row.getKey(), outs); checkStream(outs);
enumeratekeys(descriptor, System.out, cfStore.metadata); export(descriptor, System.out, Arrays.asList(keys), excludes, cfStore.metadata); else export(descriptor, excludes, cfStore.metadata);
/** * Get portion of the columns and serialize in loop while not more columns left in the row * * @param row SSTableIdentityIterator row representation with Column Family * @param key Decorated Key for the required row * @param out output stream */ private static void serializeRow(SSTableIdentityIterator row, DecoratedKey key, PrintStream out) { serializeRow(row.getColumnFamily().deletionInfo(), row, row.getColumnFamily().metadata(), key, out); }
checkStream(outs); // flushes
printUsage(); System.exit(1); printUsage(); System.exit(1); try CFMetaData metadata = metadataFromSSTable(desc); if (cmd.hasOption(ENUMERATE_KEYS_OPTION)) JsonTransformer.keysToJson(null, iterToStream(iter), cmd.hasOption(RAW_TIMESTAMPS), metadata, Stream<UnfilteredRowIterator> partitions = iterToStream(currentScanner).filter(i -> excludes.isEmpty() || !excludes.contains(metadata.getKeyValidator().getString(i.partitionKey().getKey())) );
checkStream(outs); serializeRow(deletionInfo, atomIterator, sstable.metadata, decoratedKey, outs);
printUsage(); System.exit(1); printUsage(); System.exit(1); try CFMetaData metadata = metadataFromSSTable(desc); if (cmd.hasOption(ENUMERATE_KEYS_OPTION)) JsonTransformer.keysToJson(null, iterToStream(iter), cmd.hasOption(RAW_TIMESTAMPS), metadata, Stream<UnfilteredRowIterator> partitions = iterToStream(currentScanner).filter(i -> excludes.isEmpty() || !excludes.contains(metadata.getKeyValidator().getString(i.partitionKey().getKey())) );
/** * Export an SSTable and write the resulting JSON to a PrintStream. * * @param desc the descriptor of the sstable to read from * @param outs PrintStream to write the output to * @param excludes keys to exclude from export * @param metadata Metadata to print keys in a proper format * @throws IOException on failure to read/write input/output */ public static void export(Descriptor desc, PrintStream outs, String[] excludes, CFMetaData metadata) throws IOException { export(SSTableReader.open(desc), outs, excludes, metadata); }