Search in sources :

Example 1 with DictionaryPageHeader

use of parquet.format.DictionaryPageHeader in project presto by prestodb.

the class ParquetPredicateUtils method readDictionaryPage.

private static Optional<ParquetDictionaryPage> readDictionaryPage(byte[] data, CompressionCodecName codecName) {
    try {
        ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
        PageHeader pageHeader = Util.readPageHeader(inputStream);
        if (pageHeader.type != PageType.DICTIONARY_PAGE) {
            return Optional.empty();
        }
        Slice compressedData = wrappedBuffer(data, data.length - inputStream.available(), pageHeader.getCompressed_page_size());
        DictionaryPageHeader dicHeader = pageHeader.getDictionary_page_header();
        ParquetEncoding encoding = getParquetEncoding(Encoding.valueOf(dicHeader.getEncoding().name()));
        int dictionarySize = dicHeader.getNum_values();
        return Optional.of(new ParquetDictionaryPage(decompress(codecName, compressedData, pageHeader.getUncompressed_page_size()), dictionarySize, encoding));
    } catch (IOException ignored) {
        return Optional.empty();
    }
}
Also used : ParquetDictionaryPage(com.facebook.presto.hive.parquet.ParquetDictionaryPage) ByteArrayInputStream(java.io.ByteArrayInputStream) PageHeader(parquet.format.PageHeader) DictionaryPageHeader(parquet.format.DictionaryPageHeader) Slice(io.airlift.slice.Slice) DictionaryPageHeader(parquet.format.DictionaryPageHeader) IOException(java.io.IOException) ParquetEncoding(com.facebook.presto.hive.parquet.ParquetEncoding) ParquetTypeUtils.getParquetEncoding(com.facebook.presto.hive.parquet.ParquetTypeUtils.getParquetEncoding)

Aggregations

ParquetDictionaryPage (com.facebook.presto.hive.parquet.ParquetDictionaryPage)1 ParquetEncoding (com.facebook.presto.hive.parquet.ParquetEncoding)1 ParquetTypeUtils.getParquetEncoding (com.facebook.presto.hive.parquet.ParquetTypeUtils.getParquetEncoding)1 Slice (io.airlift.slice.Slice)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 IOException (java.io.IOException)1 DictionaryPageHeader (parquet.format.DictionaryPageHeader)1 PageHeader (parquet.format.PageHeader)1