Skip to main content

DefaultParquetHandler

Struct DefaultParquetHandler 

Source
pub struct DefaultParquetHandler<E: TaskExecutor> { /* private fields */ }

Implementations§

Source§

impl<E: TaskExecutor> DefaultParquetHandler<E>

Source

pub fn new(store: Arc<DynObjectStore>, task_executor: Arc<E>) -> Self

Source

pub fn with_buffer_size(self, buffer_size: NonZero<usize>) -> Self

Set the maximum number of files to read concurrently in Self::read_parquet_files().

Defaults to super::DEFAULT_READ_BUFFER_SIZE.

This setting applies only to object-store reads. When every file in the batch uses a presigned URL (https://...), reads bypass the object store and this value has no effect; use Self::with_batch_size to tune RecordBatch chunking in that path.

Memory constraints can be imposed by constraining the buffer size and batch size. Note that overall memory usage is proportional to the product of these two values.

  1. Batch size governs the size of RecordBatches yielded in each iteration of the stream.
  2. Buffer size governs the number of concurrent file reads (which equals the size of the readahead buffer).
Source

pub fn with_batch_size(self, batch_size: NonZero<usize>) -> Self

Set the maximum number of rows per RecordBatch yielded by Self::read_parquet_files().

Defaults to super::DEFAULT_READ_BATCH_SIZE rows.

Source

pub async fn write_parquet_file( &self, data: Box<dyn EngineData>, write_context: &BoundWriteContext, ) -> KernelResult<Box<dyn EngineData>>

Write data to a new parquet file under the BoundWriteContext::write_dir and return Add action metadata ready for Transaction::add_files.

The metadata schema does not contain the dataChange column. Kernel uses the data_change flag supplied when constructing the transaction builder.

Trait Implementations§

Source§

impl<E: Debug + TaskExecutor> Debug for DefaultParquetHandler<E>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<E: TaskExecutor> ParquetHandler for DefaultParquetHandler<E>

Source§

fn write_parquet_file( &self, location: Url, data: KernelResultIteratorStatic<Box<dyn EngineData>>, ) -> KernelResult<FileSize>

Writes engine data to a Parquet file at the specified location.

This implementation uses asynchronous file I/O with object_store to write the Parquet file. If a file already exists at the given location, it will be overwritten.

§Parameters
  • location - The full URL path where the Parquet file should be written (e.g., s3://bucket/path/file.parquet, file:///path/to/file.parquet).
  • data - An iterator of engine data to be written to the Parquet file.
§Returns

The exact number of bytes written to the parquet file.

Source§

fn read_parquet_files( &self, files: &[FileMeta], physical_schema: SchemaRef, predicate: Option<PredicateRef>, ) -> KernelResult<FileDataReadResultIterator>

Read and parse the Parquet file at given locations and return the data as EngineData with the columns requested by physical schema. The ParquetHandler must return exactly the columns specified in physical_schema, and they must be in schema order. Read more
Source§

fn read_parquet_files_with_cancellation( &self, files: &[FileMeta], physical_schema: SchemaRef, predicate: Option<PredicateRef>, cancellation_token: Option<CancellationTokenRef>, ) -> KernelResult<FileDataReadResultIterator>

Cancellation-aware variant of read_parquet_files. Read more
Read the footer metadata from a Parquet file without reading the data. Read more
Cancellation-aware variant of read_parquet_footer. Read more

Auto Trait Implementations§

§

impl<E> !RefUnwindSafe for DefaultParquetHandler<E>

§

impl<E> !UnwindSafe for DefaultParquetHandler<E>

§

impl<E> Freeze for DefaultParquetHandler<E>
where Arc<E>: Freeze,

§

impl<E> Send for DefaultParquetHandler<E>
where Arc<E>: Send,

§

impl<E> Sync for DefaultParquetHandler<E>
where Arc<E>: Sync,

§

impl<E> Unpin for DefaultParquetHandler<E>
where Arc<E>: Unpin,

§

impl<E> UnsafeUnpin for DefaultParquetHandler<E>
where Arc<E>: UnsafeUnpin,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsAny for T
where T: Any + Send + Sync,

Source§

fn any_ref(&self) -> &(dyn Any + Send + Sync + 'static)

Obtains a dyn Any reference to the object: Read more
Source§

fn as_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Obtains an Arc<dyn Any> reference to the object: Read more
Source§

fn into_any(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts the object to Box<dyn Any>: Read more
Source§

fn type_name(&self) -> &'static str

Convenient wrapper for std::any::type_name, since Any does not provide it and Any::type_id is useless as a debugging aid (its Debug is just a mess of hex digits).
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> FoldWithOption for T

Source§

fn fold_with<U>(self, opt: Option<U>, f: impl FnOnce(Self, U) -> Self) -> Self

Applies an optional fold operation f to self if opt is Some; otherwise returns self unchanged. Read more
Source§

fn try_fold_with<U, E>( self, opt: Option<U>, f: impl FnOnce(Self, U) -> Result<Self, E>, ) -> Result<Self, E>

Fallible fold_with: applies Result-returning f to self if opt is Some, otherwise returns self unchanged (wrapped in Ok).
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<KernelType, ArrowType> TryIntoArrow<ArrowType> for KernelType
where ArrowType: TryFromKernel<KernelType>,

Source§

fn try_into_arrow(self) -> Result<ArrowType, ArrowError>

Source§

impl<KernelType, ArrowType> TryIntoKernel<KernelType> for ArrowType
where KernelType: TryFromArrow<ArrowType>,

Source§

fn try_into_kernel(self) -> Result<KernelType, ArrowError>

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more