Search in sources :

Example 1 with DataPageV1

use of com.facebook.presto.parquet.DataPageV1 in project presto by prestodb.

the class PageReader method readPage.

public DataPage readPage() {
    if (compressedPages.isEmpty()) {
        return null;
    }
    DataPage compressedPage = compressedPages.removeFirst();
    try {
        long firstRowIndex = getFirstRowIndex(pageIndex, offsetIndex);
        pageIndex = pageIndex + 1;
        if (compressedPage instanceof DataPageV1) {
            DataPageV1 dataPageV1 = (DataPageV1) compressedPage;
            Slice slice = decompress(codec, dataPageV1.getSlice(), dataPageV1.getUncompressedSize());
            return new DataPageV1(slice, dataPageV1.getValueCount(), dataPageV1.getUncompressedSize(), firstRowIndex, dataPageV1.getStatistics(), dataPageV1.getRepetitionLevelEncoding(), dataPageV1.getDefinitionLevelEncoding(), dataPageV1.getValueEncoding());
        } else {
            DataPageV2 dataPageV2 = (DataPageV2) compressedPage;
            if (!dataPageV2.isCompressed()) {
                return dataPageV2;
            }
            int uncompressedSize = toIntExact(dataPageV2.getUncompressedSize() - dataPageV2.getDefinitionLevels().length() - dataPageV2.getRepetitionLevels().length());
            Slice slice = decompress(codec, dataPageV2.getSlice(), uncompressedSize);
            return new DataPageV2(dataPageV2.getRowCount(), dataPageV2.getNullCount(), dataPageV2.getValueCount(), firstRowIndex, dataPageV2.getRepetitionLevels(), dataPageV2.getDefinitionLevels(), dataPageV2.getDataEncoding(), slice, dataPageV2.getUncompressedSize(), dataPageV2.getStatistics(), false);
        }
    } catch (IOException e) {
        throw new RuntimeException("Could not decompress page", e);
    }
}
Also used : DataPage(com.facebook.presto.parquet.DataPage) Slice(io.airlift.slice.Slice) DataPageV2(com.facebook.presto.parquet.DataPageV2) DataPageV1(com.facebook.presto.parquet.DataPageV1) IOException(java.io.IOException)

Example 2 with DataPageV1

use of com.facebook.presto.parquet.DataPageV1 in project presto by prestodb.

the class ParquetColumnChunk method readDataPageV1.

private long readDataPageV1(PageHeader pageHeader, int uncompressedPageSize, int compressedPageSize, long firstRowIndex, List<DataPage> pages) throws IOException {
    DataPageHeader dataHeaderV1 = pageHeader.getData_page_header();
    pages.add(new DataPageV1(getSlice(compressedPageSize), dataHeaderV1.getNum_values(), uncompressedPageSize, firstRowIndex, MetadataReader.readStats(dataHeaderV1.getStatistics(), descriptor.getColumnDescriptor().getType()), getParquetEncoding(Encoding.valueOf(dataHeaderV1.getRepetition_level_encoding().name())), getParquetEncoding(Encoding.valueOf(dataHeaderV1.getDefinition_level_encoding().name())), getParquetEncoding(Encoding.valueOf(dataHeaderV1.getEncoding().name()))));
    return dataHeaderV1.getNum_values();
}
Also used : DataPageHeader(org.apache.parquet.format.DataPageHeader) DataPageV1(com.facebook.presto.parquet.DataPageV1)

Aggregations

DataPageV1 (com.facebook.presto.parquet.DataPageV1)2 DataPage (com.facebook.presto.parquet.DataPage)1 DataPageV2 (com.facebook.presto.parquet.DataPageV2)1 Slice (io.airlift.slice.Slice)1 IOException (java.io.IOException)1 DataPageHeader (org.apache.parquet.format.DataPageHeader)1