Search in sources :

Example 6 with ColumnPageDecoder

use of org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder in project carbondata by apache.

the class DirectCompressCodec method createDecoder.

@Override
public ColumnPageDecoder createDecoder(final ColumnPageEncoderMeta meta) {
    return new ColumnPageDecoder() {

        @Override
        public ColumnPage decode(byte[] input, int offset, int length) {
            ColumnPage decodedPage;
            if (DataTypes.isDecimal(dataType)) {
                decodedPage = ColumnPage.decompressDecimalPage(meta, input, offset, length);
            } else {
                decodedPage = ColumnPage.decompress(meta, input, offset, length, false, isComplexPrimitiveIntLengthEncoding);
            }
            return LazyColumnPage.newPage(decodedPage, converter);
        }

        @Override
        public void decodeAndFillVector(byte[] input, int offset, int length, ColumnVectorInfo vectorInfo, BitSet nullBits, boolean isLVEncoded, int pageSize, ReusableDataBuffer reusableDataBuffer) {
            Compressor compressor = CompressorFactory.getInstance().getCompressor(meta.getCompressorName());
            int uncompressedLength;
            byte[] unCompressData;
            if (null != reusableDataBuffer && compressor.supportReusableBuffer()) {
                uncompressedLength = compressor.unCompressedLength(input, offset, length);
                unCompressData = reusableDataBuffer.getDataBuffer(uncompressedLength);
                compressor.rawUncompress(input, offset, length, unCompressData);
            } else {
                unCompressData = compressor.unCompressByte(input, offset, length);
                uncompressedLength = unCompressData.length;
            }
            if (DataTypes.isDecimal(dataType)) {
                TableSpec.ColumnSpec columnSpec = meta.getColumnSpec();
                DecimalConverterFactory.DecimalConverter decimalConverter = DecimalConverterFactory.INSTANCE.getDecimalConverter(columnSpec.getPrecision(), columnSpec.getScale());
                vectorInfo.decimalConverter = decimalConverter;
                if (DataTypes.isDecimal(meta.getStoreDataType())) {
                    ColumnPage decimalColumnPage = VarLengthColumnPageBase.newDecimalColumnPage(meta, unCompressData, uncompressedLength);
                    decimalConverter.fillVector(decimalColumnPage.getByteArrayPage(), pageSize, vectorInfo, nullBits, meta.getStoreDataType());
                } else {
                    converter.decodeAndFillVector(unCompressData, vectorInfo, nullBits, meta.getStoreDataType(), pageSize);
                }
            } else {
                converter.decodeAndFillVector(unCompressData, vectorInfo, nullBits, meta.getStoreDataType(), pageSize);
            }
        }

        @Override
        public ColumnPage decode(byte[] input, int offset, int length, boolean isLVEncoded) {
            return LazyColumnPage.newPage(ColumnPage.decompress(meta, input, offset, length, isLVEncoded, isComplexPrimitiveIntLengthEncoding), converter);
        }
    };
}
Also used : TableSpec(org.apache.carbondata.core.datastore.TableSpec) VariableLengthDimensionColumnPage(org.apache.carbondata.core.datastore.chunk.impl.VariableLengthDimensionColumnPage) ColumnPage(org.apache.carbondata.core.datastore.page.ColumnPage) LazyColumnPage(org.apache.carbondata.core.datastore.page.LazyColumnPage) ColumnVectorInfo(org.apache.carbondata.core.scan.result.vector.ColumnVectorInfo) BitSet(java.util.BitSet) ReusableDataBuffer(org.apache.carbondata.core.datastore.ReusableDataBuffer) DecimalConverterFactory(org.apache.carbondata.core.metadata.datatype.DecimalConverterFactory) Compressor(org.apache.carbondata.core.datastore.compression.Compressor) ColumnPageDecoder(org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder)

Example 7 with ColumnPageDecoder

use of org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder in project carbondata by apache.

the class CompressedMeasureChunkFileBasedReaderV1 method decodeColumnPage.

@Override
public ColumnPage decodeColumnPage(MeasureRawColumnChunk measureRawColumnChunk, int pageNumber) throws IOException, MemoryException {
    int blockIndex = measureRawColumnChunk.getColumnIndex();
    DataChunk dataChunk = measureColumnChunks.get(blockIndex);
    ValueEncoderMeta meta = dataChunk.getValueEncoderMeta().get(0);
    ColumnPageDecoder codec = encodingFactory.createDecoderLegacy(meta);
    ColumnPage decodedPage = codec.decode(measureRawColumnChunk.getRawData().array(), (int) measureRawColumnChunk.getOffSet(), dataChunk.getDataPageLength());
    decodedPage.setNullBits(dataChunk.getNullValueIndexForColumn());
    return decodedPage;
}
Also used : ColumnPage(org.apache.carbondata.core.datastore.page.ColumnPage) DataChunk(org.apache.carbondata.core.metadata.blocklet.datachunk.DataChunk) ColumnPageDecoder(org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder) ValueEncoderMeta(org.apache.carbondata.core.metadata.ValueEncoderMeta)

Example 8 with ColumnPageDecoder

use of org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder in project carbondata by apache.

the class CompressedMeasureChunkFileBasedReaderV3 method decodeMeasure.

/**
 * Decode measure column page with page header and raw data starting from offset
 */
protected ColumnPage decodeMeasure(DataChunk2 pageMetadata, ByteBuffer pageData, int offset) throws MemoryException, IOException {
    List<Encoding> encodings = pageMetadata.getEncoders();
    List<ByteBuffer> encoderMetas = pageMetadata.getEncoder_meta();
    ColumnPageDecoder codec = encodingFactory.createDecoder(encodings, encoderMetas);
    return codec.decode(pageData.array(), offset, pageMetadata.data_page_length);
}
Also used : Encoding(org.apache.carbondata.format.Encoding) ColumnPageDecoder(org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder) ByteBuffer(java.nio.ByteBuffer)

Example 9 with ColumnPageDecoder

use of org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder in project carbondata by apache.

the class CompressedDimensionChunkFileBasedReaderV3 method decodeDimensionByMeta.

private ColumnPage decodeDimensionByMeta(DataChunk2 pageMetadata, ByteBuffer pageData, int offset) throws IOException, MemoryException {
    List<Encoding> encodings = pageMetadata.getEncoders();
    List<ByteBuffer> encoderMetas = pageMetadata.getEncoder_meta();
    ColumnPageDecoder decoder = encodingFactory.createDecoder(encodings, encoderMetas);
    return decoder.decode(pageData.array(), offset, pageMetadata.data_page_length);
}
Also used : Encoding(org.apache.carbondata.format.Encoding) ColumnPageDecoder(org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder) ByteBuffer(java.nio.ByteBuffer)

Example 10 with ColumnPageDecoder

use of org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder in project carbondata by apache.

the class AdaptiveIntegralCodec method createDecoder.

@Override
public ColumnPageDecoder createDecoder(final ColumnPageEncoderMeta meta) {
    return new ColumnPageDecoder() {

        @Override
        public ColumnPage decode(byte[] input, int offset, int length) {
            ColumnPage page = null;
            if (DataTypes.isDecimal(meta.getSchemaDataType())) {
                page = ColumnPage.decompressDecimalPage(meta, input, offset, length);
            } else {
                page = ColumnPage.decompress(meta, input, offset, length, false, false);
            }
            return LazyColumnPage.newPage(page, converter);
        }

        @Override
        public void decodeAndFillVector(byte[] input, int offset, int length, ColumnVectorInfo vectorInfo, BitSet nullBits, boolean isLVEncoded, int pageSize, ReusableDataBuffer reusableDataBuffer) {
            Compressor compressor = CompressorFactory.getInstance().getCompressor(meta.getCompressorName());
            byte[] unCompressData;
            if (null != reusableDataBuffer && compressor.supportReusableBuffer()) {
                int uncompressedLength = compressor.unCompressedLength(input, offset, length);
                unCompressData = reusableDataBuffer.getDataBuffer(uncompressedLength);
                compressor.rawUncompress(input, offset, length, unCompressData);
            } else {
                unCompressData = compressor.unCompressByte(input, offset, length);
            }
            if (DataTypes.isDecimal(meta.getSchemaDataType())) {
                TableSpec.ColumnSpec columnSpec = meta.getColumnSpec();
                vectorInfo.decimalConverter = DecimalConverterFactory.INSTANCE.getDecimalConverter(columnSpec.getPrecision(), columnSpec.getScale());
            }
            converter.decodeAndFillVector(unCompressData, vectorInfo, nullBits, meta.getStoreDataType(), pageSize);
        }

        @Override
        public ColumnPage decode(byte[] input, int offset, int length, boolean isLVEncoded) {
            return decode(input, offset, length);
        }
    };
}
Also used : TableSpec(org.apache.carbondata.core.datastore.TableSpec) ColumnPage(org.apache.carbondata.core.datastore.page.ColumnPage) LazyColumnPage(org.apache.carbondata.core.datastore.page.LazyColumnPage) ColumnVectorInfo(org.apache.carbondata.core.scan.result.vector.ColumnVectorInfo) BitSet(java.util.BitSet) ReusableDataBuffer(org.apache.carbondata.core.datastore.ReusableDataBuffer) Compressor(org.apache.carbondata.core.datastore.compression.Compressor) ColumnPageDecoder(org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder)

Aggregations

ColumnPageDecoder (org.apache.carbondata.core.datastore.page.encoding.ColumnPageDecoder)15 ColumnPage (org.apache.carbondata.core.datastore.page.ColumnPage)9 ByteBuffer (java.nio.ByteBuffer)8 BitSet (java.util.BitSet)8 Encoding (org.apache.carbondata.format.Encoding)7 LazyColumnPage (org.apache.carbondata.core.datastore.page.LazyColumnPage)6 ReusableDataBuffer (org.apache.carbondata.core.datastore.ReusableDataBuffer)5 Compressor (org.apache.carbondata.core.datastore.compression.Compressor)5 ColumnVectorInfo (org.apache.carbondata.core.scan.result.vector.ColumnVectorInfo)5 TableSpec (org.apache.carbondata.core.datastore.TableSpec)3 DefaultEncodingFactory (org.apache.carbondata.core.datastore.page.encoding.DefaultEncodingFactory)3 LocalDictionaryChunk (org.apache.carbondata.format.LocalDictionaryChunk)3 IOException (java.io.IOException)2 EncodingFactory (org.apache.carbondata.core.datastore.page.encoding.EncodingFactory)2 DictionaryThresholdReachedException (org.apache.carbondata.core.localdictionary.exception.DictionaryThresholdReachedException)2 ColumnLocalDictionaryGenerator (org.apache.carbondata.core.localdictionary.generator.ColumnLocalDictionaryGenerator)2 LocalDictionaryGenerator (org.apache.carbondata.core.localdictionary.generator.LocalDictionaryGenerator)2 ValueEncoderMeta (org.apache.carbondata.core.metadata.ValueEncoderMeta)2 Test (org.junit.Test)2 HashMap (java.util.HashMap)1