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
Source§impl<T> Downcast for T
impl<T> Downcast for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Decompress response bodies. Read more
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more