public ColumnGroupReader(SSTableReader ssTable, DecoratedKey key, FileDataInput input) throws IOException { this.file = input; this.ssTable = ssTable; assert file.getAbsolutePosition() == realDataStart; // BIGDATA: some code move up. IndexHelper.skipBloomFilter(file); indexes = IndexHelper.deserializeIndex(file); emptyColumnFamily = ColumnFamily.serializer() .deserializeFromSSTableNoColumns(ssTable.makeColumnFamily(), file); file.readInt(); // column count file.mark(); curRangeIndex = IndexHelper.indexFor(startColumn, indexes, comparator, reversed); if (reversed && curRangeIndex == indexes.size()) curRangeIndex--; }
public BigdataColumnGroupReader(SSTableReader ssTable, DecoratedKey key, FileDataInput input) throws IOException { this.file = input; this.ssTable = ssTable; assert file.getAbsolutePosition() == realDataStart; if (ColumnFamily.serializer().isNewRowFormatIndexAtEnd(rowFormat)) { ////// HEADER ////// // skip bloom filter IndexHelper.skipBloomFilter(file); // read deletion meta info emptyColumnFamily = ColumnFamily.serializer() .deserializeFromSSTableNoColumns(ssTable.makeColumnFamily(), file); file.readInt(); // column count // the position of the first block firstBlockPos = file.getAbsolutePosition(); ////// TRAILER ////// // seek to the trailer // THE FIRST SEEK!!! file.seek(dataStart + dataSize - (Integer.SIZE / Byte.SIZE)); // index size (with column index size's int) int indexSize = file.readInt(); ////// INDEX ////// // seek to index position // THE SECOND SEEK!!! file.seek(dataStart + dataSize - (Integer.SIZE / Byte.SIZE) - indexSize); // read index into memory indexes = IndexHelper.deserializeIndex(file); } else { // skip bloom filter IndexHelper.skipBloomFilter(file); // read in index indexes = IndexHelper.deserializeIndex(file); // read deletion meta info emptyColumnFamily = ColumnFamily.serializer() .deserializeFromSSTableNoColumns(ssTable.makeColumnFamily(), file); file.readInt(); // column count // the position of the first block firstBlockPos = file.getAbsolutePosition(); } curRangeIndex = IndexHelper.indexFor(startColumn, indexes, comparator, reversed); if (reversed && curRangeIndex == indexes.size()) curRangeIndex--; // compression algorithm used when writing Compression.Algorithm compressAlgo; try { compressAlgo = Compression.getCompressionAlgorithmById( ColumnFamily.serializer().getNewRowFormatCompressAlgo(rowFormat)); } catch (IllegalArgumentException e) { logger.error(e.toString()); throw new IOException(e); } compressContext = ColumnFamilySerializer.CompressionContext.getInstance(compressAlgo); }