Experimental#
APIs in this namespace are experimental and may change without warning in the future.
- class pylibcudf.io.experimental.FileMetaData#
Parquet file footer metadata.
For details, see
cudf::io::parquet::FileMetaDataAttributes
FileMetaData.columnchunk_metadata: dict[str, list[int]]
FileMetaData.created_by: str
FileMetaData.num_rows: int
FileMetaData.row_group_num_rows: list[int]
FileMetaData.row_groups: list[RowGroup]
FileMetaData.schema: list[SchemaElement]
FileMetaData.version: int
Methods
from_bytes(cls, const uint8_t[)Build
FileMetaDatafrom parquet footer bytes.See also
pylibcudf.io.parquet_metadata.read_parquet_footersRead one
FileMetaDataper source directly frompylibcudf.io.types.SourceInfo.
- columnchunk_metadata#
FileMetaData.columnchunk_metadata: dict[str, list[int]]
Get a map of dotted column paths to lists of total_uncompressed_size values from every column chunk in this file.
- Returns:
- dict[str, list[int]]
Map of dotted column paths (
".".join(path_in_schema)) to lists of total_uncompressed_size metadata from all their column chunks.
Notes
Equivalent to, but faster than, walking each row group’s columns:
>>> result: dict[str, list[int]] = {} >>> for rg in file_metadata.row_groups: ... for col in rg.columns: ... name = ".".join(col.meta_data.path_in_schema) ... result.setdefault(name, []).append( ... col.meta_data.total_uncompressed_size ... )
- created_by#
FileMetaData.created_by: str
Get the application that created the file.
- classmethod from_bytes(
- cls,
- const uint8_t[::1] footer_bytes: Buffer,
Build
FileMetaDatafrom parquet footer bytes.- Parameters:
- footer_bytesBuffer
A contiguous bytes-like object containing parquet footer bytes. The bytes are forwarded as-is to
cudf::io::parquet::experimental::hybrid_scan_readerwithout Python-side preprocessing. This method does not strip the parquet footer suffix (4-byte footer length +PAR1magic), so callers should generally pass only the footer region bytes.
- Returns:
- FileMetaData
Parsed parquet file footer metadata.
- num_rows#
FileMetaData.num_rows: int
Get the total number of rows.
- row_group_num_rows#
FileMetaData.row_group_num_rows: list[int]
Get row counts for each row group in this file.
- Returns:
- list
A list with the row count per row group in this file.
Notes
Equivalent to, but faster than, checking each row groups’ num_rows:
>>> [rg.num_rows for rg in file_metadata.row_groups]
- row_groups#
FileMetaData.row_groups: list[RowGroup]
Get row group metadata in this file.
- schema#
FileMetaData.schema: list[SchemaElement]
Get the file’s schema tree, flattened by a depth-first traversal.
The first element is the root. Each element’s
num_childrengives the number of elements that follow it at the next level, which is what allows the tree to be reconstructed from the flat list.- Returns:
- list[SchemaElement]
One entry per schema element, in depth-first order.
- version#
FileMetaData.version: int
Get the file format version.
- class pylibcudf.io.experimental.HybridScanMetadata#
Shareable, pre-parsed Parquet file metadata for the hybrid scan reader.
This class enables parsing the metadata of a Parquet file once, then constructing multiple
HybridScanReaderinstances that share it (one per row-group range of the file) instead of each re-parsing and copying the metadata.For details, see
cudf::io::parquet::experimental::hybrid_scan_metadataMethods
from_footer_bytes(const uint8_t[, ...)Parse shareable metadata from Parquet footer bytes.
from_parquet_metadata(FileMetaData metadata, ...)Build shareable metadata from a pre-populated
FileMetaData.Examples
>>> import pylibcudf as plc >>> metadata = plc.io.experimental.HybridScanMetadata.from_parquet_metadata( ... file_metadata, options) >>> reader = plc.io.experimental.HybridScanReader.from_metadata(metadata)
- const uint8_t[::1] footer_bytes,
- ParquetReaderOptions options,
Parse shareable metadata from Parquet footer bytes.
- Parameters:
- footer_bytesBuffer
Parquet file footer bytes
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- HybridScanMetadata
- static from_parquet_metadata(
- FileMetaData metadata,
- ParquetReaderOptions options,
Build shareable metadata from a pre-populated
FileMetaData.- Parameters:
- metadataFileMetaData
Pre-populated Parquet file metadata
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- HybridScanMetadata
- class pylibcudf.io.experimental.HybridScanMultiFile#
Experimental multi-source Parquet reader for highly selective filters.
Vectorizes the
HybridScanReaderAPIs over multiple Parquet sources. Inputs and outputs are indexed by source order, except for the row mask which is a single boolean column spanning all rows of all sources concatenated in source order, then in row-group order within a source.For details, see
cudf::io::parquet::experimental::hybrid_scan_multifileMethods
all_column_chunks_byte_ranges(self, ...)Get byte ranges of column chunks of all columns.
all_row_groups(self, ...)Get all available per-source row group indices.
bloom_filters_byte_ranges(self, ...)Get byte ranges of bloom filters for row group pruning.
build_all_true_row_mask(self, ...)Build an all-true boolean column spanning all selected rows.
build_row_mask_with_page_index_stats(self, ...)Build a boolean column indicating surviving rows from page stats.
construct_row_group_passes(self, ...)Partition row groups into passes such that the GPU memory required to materialize a pass for selected columns is bounded by the specified limit.
dictionary_pages_byte_ranges(self, ...)Get byte ranges of column chunk dictionary pages for row group pruning.
filter_row_groups_with_byte_range(self, ...)Filter row groups using the byte range from the options.
filter_row_groups_with_stats(self, ...)Filter row groups using column chunk statistics.
from_parquet_metadatas(parquet_metadatas, ...)Create a HybridScanMultiFile from pre-populated metadata.
has_next_table_chunk(self)Check if there is any parquet data left to read.
materialize_all_columns(self, ...)Materialize all columns.
materialize_payload_columns_chunk(self, ...)Materialize a chunk of payload columns.
page_index_byte_ranges(self)Get the byte range of the page index of all sources.
parquet_metadatas(self)Get the Parquet file footer metadata of all sources.
payload_pages_byte_ranges(self, ...)Get byte ranges of the pages of payload columns.
reset_column_selection(self)Reset the column selection state.
setup_chunking_for_payload_pages(self, ...)Setup chunking information for payload columns read page by page.
setup_page_indexes(self, page_index_bytes)Setup the page index within the Parquet file metadata of all sources.
total_rows_in_row_groups(self, ...)Get the total number of top-level rows in the row groups.
Examples
>>> import pylibcudf as plc >>> reader = plc.io.experimental.HybridScanMultiFile.from_parquet_metadatas( ... metadatas, options) >>> row_groups = reader.all_row_groups(options)
- all_column_chunks_byte_ranges(
- self,
- RowGroupIndices row_group_indices,
- ParquetReaderOptions options,
Get byte ranges of column chunks of all columns.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- tuple[list[ByteRangeInfo], list[int]]
Flattened byte ranges to column chunks of all columns and their corresponding source indices
- all_row_groups(
- self,
- ParquetReaderOptions options,
Get all available per-source row group indices.
- Parameters:
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- RowGroupIndices
Row group indices, one inner list per source
- bloom_filters_byte_ranges(
- self,
- RowGroupIndices row_group_indices,
- ParquetReaderOptions options,
Get byte ranges of bloom filters for row group pruning.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- tuple[list[ByteRangeInfo], list[int]]
Flattened bloom filter byte ranges and their corresponding source indices
- build_all_true_row_mask(
- self,
- RowGroupIndices row_group_indices,
- stream: CudaStreamLike | None = None,
- DeviceMemoryResource mr=None,
Build an all-true boolean column spanning all selected rows.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- Returns:
- Column
An all-true boolean column spanning all selected rows across all sources
- build_row_mask_with_page_index_stats(
- self,
- RowGroupIndices row_group_indices,
- ParquetReaderOptions options,
- stream: CudaStreamLike | None = None,
- DeviceMemoryResource mr=None,
Build a boolean column indicating surviving rows from page stats.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- Returns:
- Column
Boolean column indicating surviving rows across all sources
- construct_row_group_passes(
- self,
- read_columns_mode columns_mode,
- RowGroupIndices row_group_indices,
- size_t pass_read_limit,
- ParquetReaderOptions options,
Partition row groups into passes such that the GPU memory required to materialize a pass for selected columns is bounded by the specified limit.
Note that
pass_read_limitis a hint, not an absolute limit. i.e. if a row group cannot fit within the limit, it will still constitute a valid pass.- Parameters:
- columns_modeReadColumnsMode
Columns selection to use for pass memory estimation
- row_group_indicesRowGroupIndices
Input row group indices, one list per source.
- pass_read_limitint
Limit on the amount of memory used for reading and decompressing data, or 0 if there is no limit.
- optionsParquetReaderOptions
Parquet reader options used to select columns.
- Returns:
- list[RowGroupIndices]
Per-source row group indices, one list per pass.
- Raises:
- ValueError
If
row_group_indicesis empty.
- dictionary_pages_byte_ranges(
- self,
- RowGroupIndices row_group_indices,
- ParquetReaderOptions options,
Get byte ranges of column chunk dictionary pages for row group pruning.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- tuple[list[ByteRangeInfo], list[int]]
Flattened dictionary page byte ranges and their corresponding source indices
- filter_row_groups_with_byte_range(
- self,
- RowGroupIndices row_group_indices,
- ParquetReaderOptions options,
Filter row groups using the byte range from the options.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- RowGroupIndices
Filtered row group indices, one inner list per source
- filter_row_groups_with_stats(
- self,
- RowGroupIndices row_group_indices,
- ParquetReaderOptions options,
- stream: CudaStreamLike | None = None,
Filter row groups using column chunk statistics.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- Returns:
- RowGroupIndices
Filtered row group indices, one inner list per source
- static from_parquet_metadatas(parquet_metadatas: Sequence[FileMetaData], ParquetReaderOptions options) HybridScanMultiFile#
Create a HybridScanMultiFile from pre-populated metadata.
- Parameters:
- parquet_metadatasSequence[FileMetaData]
Pre-populated Parquet file metadata, one per source
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- HybridScanMultiFile
- has_next_table_chunk(self) bool#
Check if there is any parquet data left to read.
- Returns:
- bool
True if there is data left to read
- materialize_all_columns(self, RowGroupIndices row_group_indices, list column_chunk_data: list[Span], ParquetReaderOptions options, stream: CudaStreamLike | None = None, DeviceMemoryResource mr=None) TableWithMetadata#
Materialize all columns.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- column_chunk_datalist[Span]
Span-like objects containing flattened column chunk data of all columns, in the same order as
all_column_chunks_byte_ranges- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- Returns:
- TableWithMetadata
Table of materialized all columns and metadata
- materialize_payload_columns_chunk(
- self,
- Column row_mask,
Materialize a chunk of payload columns.
- Parameters:
- row_maskColumn
Boolean column indicating which rows need to be read
- Returns:
- TableWithMetadata
Table chunk of materialized payload columns and metadata
- page_index_byte_ranges(
- self,
Get the byte range of the page index of all sources.
- Returns:
- list[ByteRangeInfo]
Byte range of the page index, one per source
- parquet_metadatas(self) list[FileMetaData]#
Get the Parquet file footer metadata of all sources.
- Returns:
- list[FileMetaData]
Parquet file footer metadata, one per source
- payload_pages_byte_ranges(
- self,
- RowGroupIndices row_group_indices,
- Column row_mask,
- ParquetReaderOptions options,
- stream: CudaStreamLike | None = None,
Get byte ranges of the pages of payload columns.
Byte ranges are flattened in source, row group, column chunk, and page order. Dictionary pages precede data pages within a column chunk, and pruned pages are returned as empty byte ranges.
- Parameters:
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- row_maskColumn
Boolean column indicating which rows need to be read
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- Returns:
- tuple[list[ByteRangeInfo], list[int]]
Flattened byte ranges to the pages of payload columns and the source index of each byte range
- reset_column_selection(self) None#
Reset the column selection state.
Resets the internal column selection state forcing re-selection of columns in subsequent filter and read operations
- setup_chunking_for_payload_pages(
- self,
- size_t chunk_read_limit,
- size_t pass_read_limit,
- RowGroupIndices row_group_indices,
- Column row_mask,
- page_data: Sequence,
- ParquetReaderOptions options,
- stream: CudaStreamLike | None = None,
- DeviceMemoryResource mr=None,
Setup chunking information for payload columns read page by page.
The data page mask is inferred from
page_data, which must have the same shape as the byte ranges returned bypayload_pages_byte_ranges().- Parameters:
- chunk_read_limitint
Limit on bytes returned per chunk (0 for no limit)
- pass_read_limitint
Limit on memory for reading/decompressing (0 for no limit)
- row_group_indicesRowGroupIndices
Input row group indices, one list per source
- row_maskColumn
Boolean column indicating which rows need to be read
- page_dataSequence
Span-like objects containing the page data of payload columns, in the same order as the byte ranges returned by
payload_pages_byte_ranges().Noneindicates a pruned page- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- class pylibcudf.io.experimental.HybridScanReader(
- const uint8_t[::1] footer_bytes: Buffer,
- ParquetReaderOptions options,
Experimental Parquet reader optimized for highly selective filters.
This class implements a hybrid scan operation for reading Parquet files with highly selective filters. It reads in two passes: first reading filter columns to build a row mask, then reading payload columns using that mask for optimization.
For details, see
cudf::io::parquet::experimental::hybrid_scan_reader- Parameters:
- footer_bytesBuffer
Parquet file footer bytes
- optionsParquetReaderOptions
Parquet reader options
Methods
all_column_chunks_byte_ranges(self, ...)Get byte ranges of column chunks of all columns.
all_row_groups(self, ...)Get all available row groups from the parquet file.
bloom_filters_byte_ranges(self, ...)Get byte ranges of bloom filters for row group pruning.
build_all_true_row_mask(self, ...)Build an all-true boolean survival column for the given row groups.
build_row_mask_with_page_index_stats(self, ...)Build a boolean column indicating surviving rows from page stats.
construct_row_group_passes(self, ...)Partition row groups into passes such that the GPU memory required to materialize a pass for selected columns is bounded by the specified limit.
dictionary_pages_byte_ranges(self, ...)Get byte ranges of column chunk dictionary pages for row group pruning.
filter_column_chunks_byte_ranges(self, ...)Get byte ranges of column chunks of filter columns.
filter_row_groups_with_bloom_filters(self, ...)Filter row groups using column chunk bloom filters.
Filter row groups using column chunk dictionary pages.
filter_row_groups_with_stats(self, ...)Filter row groups using column chunk statistics.
from_metadata(HybridScanMetadata metadata)Create a HybridScanReader that shares pre-parsed metadata.
from_parquet_metadata(FileMetaData metadata, ...)Create a HybridScanReader from pre-populated metadata.
has_next_table_chunk(self)Check if there is any parquet data left to read.
materialize_all_columns(self, ...)Materialize all columns.
materialize_filter_columns(self, ...)Materialize filter columns and update the row mask.
materialize_filter_columns_chunk(self, ...)Materialize a chunk of filter columns.
materialize_payload_columns(self, ...)Materialize payload columns and apply the row mask.
materialize_payload_columns_chunk(self, ...)Materialize a chunk of payload columns.
page_index_byte_range(self)Get the byte range of the page index.
parquet_metadata(self)Get the Parquet file footer metadata.
payload_column_chunks_byte_ranges(self, ...)Get byte ranges of column chunks of payload columns.
payload_pages_byte_ranges(self, ...)Get byte ranges of pages of payload columns.
reset_column_selection(self)Reset the column selection state.
setup_chunking_for_filter_columns(self, ...)Setup chunking information for filter columns.
setup_chunking_for_payload_columns(self, ...)Setup chunking information for payload columns.
setup_chunking_for_payload_pages(self, ...)Setup chunking information for payload columns read page by page.
setup_page_index(self, const uint8_t[)Setup the page index within the Parquet file metadata.
total_rows_in_row_groups(self, ...)Get the total number of top-level rows in the row groups.
Examples
>>> import pylibcudf as plc >>> # Create reader from footer bytes >>> reader = plc.io.hybrid_scan.HybridScanReader(footer_bytes, options) >>> # Get metadata >>> metadata = reader.parquet_metadata() >>> # Get all row groups >>> row_groups = reader.all_row_groups(options)
- all_column_chunks_byte_ranges(self, list row_group_indices: list[int], ParquetReaderOptions options) list[ByteRangeInfo]#
Get byte ranges of column chunks of all columns.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- list[ByteRangeInfo]
Byte ranges to column chunks of all columns
- all_row_groups(
- self,
- ParquetReaderOptions options,
Get all available row groups from the parquet file.
- Parameters:
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- list[int]
List of row group indices
- bloom_filters_byte_ranges(self, list row_group_indices: list[int], ParquetReaderOptions options) list[ByteRangeInfo]#
Get byte ranges of bloom filters for row group pruning.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- list[ByteRangeInfo]
Byte ranges to column chunk bloom filters subject to the filter predicate
Notes
Device buffers for bloom filter byte ranges must be allocated using a 32 byte aligned memory resource.
- build_all_true_row_mask(
- self,
- list row_group_indices,
- stream: CudaStreamLike | None = None,
- DeviceMemoryResource mr=None,
Build an all-true boolean survival column for the given row groups.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- Returns:
- Column
All-true boolean column with one entry per row across all row groups
- build_row_mask_with_page_index_stats(self, list row_group_indices: list[int], ParquetReaderOptions options, stream: CudaStreamLike | None = None, DeviceMemoryResource mr=None) Column#
Build a boolean column indicating surviving rows from page stats.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- Returns:
- Column
Boolean column indicating surviving rows
- construct_row_group_passes(self, read_columns_mode columns_mode, list row_group_indices: list[int], size_t pass_read_limit, ParquetReaderOptions options) list[list[int]]#
Partition row groups into passes such that the GPU memory required to materialize a pass for selected columns is bounded by the specified limit.
Note that
pass_read_limitis a hint, not an absolute limit. i.e. if a row group cannot fit within the limit, it will still constitute a valid pass.- Parameters:
- columns_modeReadColumnsMode
Columns selection to use for pass memory estimation
- row_group_indiceslist[int]
Input row group indices
- pass_read_limitint
Limit on the amount of memory used for reading and decompressing data, or 0 if there is no limit.
- optionsParquetReaderOptions
Parquet reader options used to select columns.
- Returns:
- list[list[int]]
Lists of row group indices, one per pass.
- Raises:
- ValueError
If
row_group_indicesis empty.
- dictionary_pages_byte_ranges(self, list row_group_indices: list[int], ParquetReaderOptions options) list[ByteRangeInfo]#
Get byte ranges of column chunk dictionary pages for row group pruning.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- list[ByteRangeInfo]
Byte ranges to column chunk dictionary pages subject to the filter predicate
- filter_column_chunks_byte_ranges(self, list row_group_indices: list[int], ParquetReaderOptions options) list[ByteRangeInfo]#
Get byte ranges of column chunks of filter columns.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- list[ByteRangeInfo]
Byte ranges to column chunks of filter columns
- filter_row_groups_with_bloom_filters(self, list bloom_filter_data, list row_group_indices: list[int], ParquetReaderOptions options, stream: CudaStreamLike | None = None) list[int]#
Filter row groups using column chunk bloom filters.
- Parameters:
- bloom_filter_dataSequence
Span-like objects containing bloom filter data
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- Returns:
- list[int]
Filtered row group indices
- filter_row_groups_with_dictionary_pages(self, list dictionary_page_data, list row_group_indices: list[int], ParquetReaderOptions options, stream: CudaStreamLike | None = None) list[int]#
Filter row groups using column chunk dictionary pages.
- Parameters:
- dictionary_page_dataSequence
Span-like objects containing dictionary page data
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- Returns:
- list[int]
Filtered row group indices
- filter_row_groups_with_stats(self, list row_group_indices: list[int], ParquetReaderOptions options, stream: CudaStreamLike | None = None) list[int]#
Filter row groups using column chunk statistics.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- Returns:
- list[int]
Filtered row group indices
- static from_metadata(HybridScanMetadata metadata)#
Create a HybridScanReader that shares pre-parsed metadata.
Constructs a lightweight reader that borrows
metadatainstead of re-parsing and copying the file metadata. Use one sharedHybridScanMetadatato read row-group ranges of a single file. Overlapping row-group ranges across readers produce duplicate rows.- Parameters:
- metadataHybridScanMetadata
Shared, pre-parsed Parquet file metadata
- Returns:
- HybridScanReader
- static from_parquet_metadata(
- FileMetaData metadata,
- ParquetReaderOptions options,
Create a HybridScanReader from pre-populated metadata.
- Parameters:
- metadataFileMetaData
Pre-populated Parquet file metadata
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- HybridScanReader
- has_next_table_chunk(self) bool#
Check if there is any parquet data left to read.
- Returns:
- bool
True if there is data left to read
- materialize_all_columns(self, list row_group_indices: list[int], list column_chunk_data, ParquetReaderOptions options, stream: CudaStreamLike | None = None, DeviceMemoryResource mr=None) TableWithMetadata#
Materialize all columns.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- column_chunk_dataSequence
Span-like objects containing column chunk data of all columns
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- Returns:
- TableWithMetadata
Table of materialized all columns and metadata
- materialize_filter_columns(self, list row_group_indices: list[int], list column_chunk_data, Column row_mask, use_data_page_mask mask_data_pages, ParquetReaderOptions options, stream: CudaStreamLike | None = None, DeviceMemoryResource mr=None) TableWithMetadata#
Materialize filter columns and update the row mask.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- column_chunk_dataSequence
Span-like objects containing column chunk data of filter columns
- row_maskColumn
Mutable boolean column indicating surviving rows
- mask_data_pagesUseDataPageMask
Whether to use a data page mask
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- Returns:
- TableWithMetadata
Table of materialized filter columns and metadata
- materialize_filter_columns_chunk(
- self,
- Column row_mask,
Materialize a chunk of filter columns.
- Parameters:
- row_maskColumn
Mutable boolean column indicating surviving rows
- Returns
- ——-
- TableWithMetadata
Table chunk of materialized filter columns and metadata
- materialize_payload_columns(self, list row_group_indices: list[int], list column_chunk_data, Column row_mask, use_data_page_mask mask_data_pages, ParquetReaderOptions options, stream: CudaStreamLike | None = None, DeviceMemoryResource mr=None) TableWithMetadata#
Materialize payload columns and apply the row mask.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- column_chunk_dataSequence
Span-like objects containing column chunk data of payload columns
- row_maskColumn
Boolean column indicating surviving rows
- mask_data_pagesUseDataPageMask
Whether to use a data page mask
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- Returns:
- TableWithMetadata
Table of materialized payload columns and metadata
- materialize_payload_columns_chunk(
- self,
- Column row_mask,
Materialize a chunk of payload columns.
- Parameters:
- row_maskColumn
Boolean column indicating surviving rows
- Returns
- ——-
- TableWithMetadata
Table chunk of materialized payload columns and metadata
- page_index_byte_range(self) ByteRangeInfo#
Get the byte range of the page index.
- Returns:
- ByteRangeInfo
Byte range of the page index
- parquet_metadata(self) FileMetaData#
Get the Parquet file footer metadata.
- Returns:
- FileMetaData
Parquet file footer metadata
- payload_column_chunks_byte_ranges(self, list row_group_indices: list[int], ParquetReaderOptions options) list[ByteRangeInfo]#
Get byte ranges of column chunks of payload columns.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- optionsParquetReaderOptions
Parquet reader options
- Returns:
- list[ByteRangeInfo]
Byte ranges to column chunks of payload columns
- payload_pages_byte_ranges(self, list row_group_indices: list[int], Column row_mask, ParquetReaderOptions options, stream: CudaStreamLike | None = None) list[ByteRangeInfo]#
Get byte ranges of pages of payload columns.
Byte ranges are ordered by row group, column chunk, and page. Dictionary pages precede data pages within each column chunk, and pruned pages are returned as empty byte ranges.
- Parameters:
- row_group_indiceslist[int]
Input row group indices
- row_maskColumn
Boolean column indicating which rows need to be read
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- Returns:
- list[ByteRangeInfo]
Byte ranges to pages of payload columns
- reset_column_selection(self) None#
Reset the column selection state.
Resets the internal column selection state forcing re-selection of columns in subsequent filter and read operations
- setup_chunking_for_filter_columns(self, size_t chunk_read_limit, size_t pass_read_limit, list row_group_indices: list[int], Column row_mask, use_data_page_mask mask_data_pages, column_chunk_data: Sequence, ParquetReaderOptions options, stream: CudaStreamLike | None = None, DeviceMemoryResource mr=None) None#
Setup chunking information for filter columns.
- Parameters:
- chunk_read_limitint
Limit on bytes returned per chunk (0 for no limit)
- pass_read_limitint
Limit on memory for reading/decompressing (0 for no limit)
- row_group_indiceslist[int]
Input row group indices
- row_maskColumn
Boolean column indicating surviving rows
- mask_data_pagesUseDataPageMask
Whether to use a data page mask
- column_chunk_dataSequence
Span-like objects containing column chunk data of filter columns
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- setup_chunking_for_payload_columns(self, size_t chunk_read_limit, size_t pass_read_limit, list row_group_indices: list[int], Column row_mask, use_data_page_mask mask_data_pages, column_chunk_data: Sequence, ParquetReaderOptions options, stream: CudaStreamLike | None = None, DeviceMemoryResource mr=None) None#
Setup chunking information for payload columns.
- Parameters:
- chunk_read_limitint
Limit on bytes returned per chunk (0 for no limit)
- pass_read_limitint
Limit on memory for reading/decompressing (0 for no limit)
- row_group_indiceslist[int]
Input row group indices
- row_maskColumn
Boolean column indicating surviving rows
- mask_data_pagesUseDataPageMask
Whether to use a data page mask
- column_chunk_dataSequence
Span-like objects containing column chunk data of payload columns
- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- setup_chunking_for_payload_pages(self, size_t chunk_read_limit, size_t pass_read_limit, list row_group_indices: list[int], Column row_mask, page_data: Sequence, ParquetReaderOptions options, stream: CudaStreamLike | None = None, DeviceMemoryResource mr=None) None#
Setup chunking information for payload columns read page by page.
The data page mask is inferred from
page_data, which must be in the same order as the byte ranges returned bypayload_pages_byte_ranges(). Table chunks are read withmaterialize_payload_columns_chunk().- Parameters:
- chunk_read_limitint
Limit on bytes returned per chunk (0 for no limit)
- pass_read_limitint
Limit on memory for reading/decompressing (0 for no limit)
- row_group_indiceslist[int]
Input row group indices
- row_maskColumn
Boolean column indicating which rows need to be read
- page_dataSequence
Span-like objects containing the page data of payload columns, in the same order as the byte ranges returned by
payload_pages_byte_ranges().Noneindicates a pruned page- optionsParquetReaderOptions
Parquet reader options
- streamStream, optional
CUDA stream
- mrDeviceMemoryResource, optional
Device memory resource
- pylibcudf.io.experimental.ReadColumnsMode#
See also
read_columns_mode.Enum members
FILTER_COLUMNSPAYLOAD_COLUMNSALL_COLUMNS
- class pylibcudf.io.experimental.RowGroupIndices#
Immutable per-source row group indices held as a C++ object.
Converting a
list[list[int]]into astd::vector<std::vector<size_type>>is done once at construction. Instances are accepted and returned by theHybridScanMultiFilemethods so that the conversion is not repeated on every call.Methods
from_lists(row_group_indices)Create RowGroupIndices from per-source row group indices.
tolist(self)Return the indices as a
list[list[int]].- static from_lists(row_group_indices) RowGroupIndices#
Create RowGroupIndices from per-source row group indices.
- Parameters:
- row_group_indicesSequence[Sequence[int]]
Row group indices, one inner sequence per source
- Returns:
- RowGroupIndices
- pylibcudf.io.experimental.UseDataPageMask#
See also
use_data_page_mask.Enum members
YESNO