Struct parquet_format_safe::PageHeader
source · pub struct PageHeader {
pub type_: PageType,
pub uncompressed_page_size: i32,
pub compressed_page_size: i32,
pub crc: Option<i32>,
pub data_page_header: Option<DataPageHeader>,
pub index_page_header: Option<IndexPageHeader>,
pub dictionary_page_header: Option<DictionaryPageHeader>,
pub data_page_header_v2: Option<DataPageHeaderV2>,
}
Fields§
§type_: PageType
the type of the page: indicates which of the *_header fields is set *
uncompressed_page_size: i32
Uncompressed page size in bytes (not including this header) *
compressed_page_size: i32
Compressed (and potentially encrypted) page size in bytes, not including this header *
crc: Option<i32>
The 32bit CRC for the page, to be be calculated as follows:
- Using the standard CRC32 algorithm
- On the data only, i.e. this header should not be included. ‘Data’ hereby refers to the concatenation of the repetition levels, the definition levels and the column value, in this exact order.
- On the encoded versions of the repetition levels, definition levels and column values
- On the compressed versions of the repetition levels, definition levels
and column values where possible;
- For v1 data pages, the repetition levels, definition levels and column values are always compressed together. If a compression scheme is specified, the CRC shall be calculated on the compressed version of this concatenation. If no compression scheme is specified, the CRC shall be calculated on the uncompressed version of this concatenation.
- For v2 data pages, the repetition levels and definition levels are handled separately from the data and are never compressed (only encoded). If a compression scheme is specified, the CRC shall be calculated on the concatenation of the uncompressed repetition levels, uncompressed definition levels and the compressed column values. If no compression scheme is specified, the CRC shall be calculated on the uncompressed concatenation.
- In encrypted columns, CRC is calculated after page encryption; the encryption itself is performed after page compression (if compressed) If enabled, this allows for disabling checksumming in HDFS if only a few pages need to be read.
data_page_header: Option<DataPageHeader>
§index_page_header: Option<IndexPageHeader>
§dictionary_page_header: Option<DictionaryPageHeader>
§data_page_header_v2: Option<DataPageHeaderV2>
Implementations§
source§impl PageHeader
impl PageHeader
pub fn new<F4, F5, F6, F7, F8>(
type_: PageType,
uncompressed_page_size: i32,
compressed_page_size: i32,
crc: F4,
data_page_header: F5,
index_page_header: F6,
dictionary_page_header: F7,
data_page_header_v2: F8
) -> PageHeaderwhere
F4: Into<Option<i32>>,
F5: Into<Option<DataPageHeader>>,
F6: Into<Option<IndexPageHeader>>,
F7: Into<Option<DictionaryPageHeader>>,
F8: Into<Option<DataPageHeaderV2>>,
pub fn read_from_in_protocol<T: TInputProtocol>( i_prot: &mut T ) -> Result<PageHeader>
pub async fn stream_from_in_protocol<T: TInputStreamProtocol>( i_prot: &mut T ) -> Result<PageHeader>
pub fn write_to_out_protocol<T: TOutputProtocol>( &self, o_prot: &mut T ) -> Result<usize>
pub async fn write_to_out_stream_protocol<T: TOutputStreamProtocol>( &self, o_prot: &mut T ) -> Result<usize>
Trait Implementations§
source§impl AsyncReadThrift for PageHeader
impl AsyncReadThrift for PageHeader
fn stream_from_in_protocol<'life0, 'async_trait, T>(
i_prot: &'life0 mut T
) -> Pin<Box<dyn Future<Output = Result<PageHeader>> + Send + 'async_trait>>where
T: 'async_trait + TInputStreamProtocol,
'life0: 'async_trait,
source§impl Clone for PageHeader
impl Clone for PageHeader
source§fn clone(&self) -> PageHeader
fn clone(&self) -> PageHeader
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for PageHeader
impl Debug for PageHeader
source§impl Hash for PageHeader
impl Hash for PageHeader
source§impl Ord for PageHeader
impl Ord for PageHeader
source§fn cmp(&self, other: &PageHeader) -> Ordering
fn cmp(&self, other: &PageHeader) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl PartialEq for PageHeader
impl PartialEq for PageHeader
source§fn eq(&self, other: &PageHeader) -> bool
fn eq(&self, other: &PageHeader) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for PageHeader
impl PartialOrd for PageHeader
source§fn partial_cmp(&self, other: &PageHeader) -> Option<Ordering>
fn partial_cmp(&self, other: &PageHeader) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl ReadThrift for PageHeader
impl ReadThrift for PageHeader
fn read_from_in_protocol<T: TInputProtocol>( i_prot: &mut T ) -> Result<PageHeader>
impl Eq for PageHeader
impl StructuralPartialEq for PageHeader
Auto Trait Implementations§
impl Freeze for PageHeader
impl RefUnwindSafe for PageHeader
impl Send for PageHeader
impl Sync for PageHeader
impl Unpin for PageHeader
impl UnwindSafe for PageHeader
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more