pub struct FanoutWriter<B, I = RecordBatch, O = Vec<DataFile>>where
B: IcebergWriterBuilder<I, O>,
O: IntoIterator + FromIterator<<O as IntoIterator>::Item>,
<O as IntoIterator>::Item: Clone,{ /* private fields */ }Expand description
A writer that can write data to multiple partitions simultaneously.
Unlike ClusteredWriter which expects sorted input and maintains only one active writer,
FanoutWriter can handle unsorted data by maintaining multiple active writers in a map.
This allows writing to any partition at any time, but uses more memory as all writers
remain active until the writer is closed.
§Type Parameters
B- The inner writer builder typeI- Input type (defaults toRecordBatch)O- Output collection type (defaults toVec<DataFile>)
Implementations§
Source§impl<B, I, O> FanoutWriter<B, I, O>where
B: IcebergWriterBuilder<I, O>,
I: Send + 'static,
O: IntoIterator + FromIterator<<O as IntoIterator>::Item>,
<O as IntoIterator>::Item: Send + Clone,
impl<B, I, O> FanoutWriter<B, I, O>where
B: IcebergWriterBuilder<I, O>,
I: Send + 'static,
O: IntoIterator + FromIterator<<O as IntoIterator>::Item>,
<O as IntoIterator>::Item: Send + Clone,
Trait Implementations§
Source§impl<B, I, O> PartitioningWriter<I, O> for FanoutWriter<B, I, O>where
B: IcebergWriterBuilder<I, O>,
I: Send + 'static,
O: IntoIterator + FromIterator<<O as IntoIterator>::Item> + Send + 'static,
<O as IntoIterator>::Item: Send + Clone,
impl<B, I, O> PartitioningWriter<I, O> for FanoutWriter<B, I, O>where
B: IcebergWriterBuilder<I, O>,
I: Send + 'static,
O: IntoIterator + FromIterator<<O as IntoIterator>::Item> + Send + 'static,
<O as IntoIterator>::Item: Send + Clone,
Auto Trait Implementations§
impl<B, I, O> Freeze for FanoutWriter<B, I, O>
impl<B, I, O> RefUnwindSafe for FanoutWriter<B, I, O>where
<O as IntoIterator>::Item: Sized + RefUnwindSafe,
B: RefUnwindSafe,
I: RefUnwindSafe,
<B as IcebergWriterBuilder<I, O>>::R: RefUnwindSafe,
impl<B, I, O> Send for FanoutWriter<B, I, O>
impl<B, I, O> Sync for FanoutWriter<B, I, O>
impl<B, I, O> Unpin for FanoutWriter<B, I, O>where
<O as IntoIterator>::Item: Sized + Unpin,
B: Unpin,
I: Unpin,
<B as IcebergWriterBuilder<I, O>>::R: Unpin,
impl<B, I, O> UnwindSafe for FanoutWriter<B, I, O>where
<O as IntoIterator>::Item: Sized + UnwindSafe,
B: UnwindSafe,
<B as IcebergWriterBuilder<I, O>>::R: UnwindSafe,
I: UnwindSafe,
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
§impl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Forward to the method defined on the type
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Forward to the method defined on the type
Any.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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