Struct FileWriter
pub struct FileWriter<W> {
writer: W,
write_options: IpcWriteOptions,
schema: Arc<Schema>,
block_offsets: usize,
dictionary_blocks: Vec<Block>,
record_blocks: Vec<Block>,
finished: bool,
dictionary_tracker: DictionaryTracker,
custom_metadata: HashMap<String, String>,
data_gen: IpcDataGenerator,
}
Expand description
Arrow File Writer
Writes Arrow RecordBatch
es in the IPC File Format.
§See Also
StreamWriter
for writing IPC Streams
§Example
let batch = record_batch!(("a", Int32, [1, 2, 3])).unwrap();
// create a new writer, the schema must be known in advance
let mut writer = FileWriter::try_new(&mut file, &batch.schema()).unwrap();
// write each batch to the underlying writer
writer.write(&batch).unwrap();
// When all batches are written, call finish to flush all buffers
writer.finish().unwrap();
Fields§
§writer: W
§write_options: IpcWriteOptions
§schema: Arc<Schema>
§block_offsets: usize
§dictionary_blocks: Vec<Block>
§record_blocks: Vec<Block>
§finished: bool
§dictionary_tracker: DictionaryTracker
§custom_metadata: HashMap<String, String>
§data_gen: IpcDataGenerator
Implementations§
§impl<W> FileWriter<BufWriter<W>>where
W: Write,
impl<W> FileWriter<BufWriter<W>>where
W: Write,
pub fn try_new_buffered(
writer: W,
schema: &Schema,
) -> Result<FileWriter<BufWriter<W>>, ArrowError>
pub fn try_new_buffered( writer: W, schema: &Schema, ) -> Result<FileWriter<BufWriter<W>>, ArrowError>
Try to create a new file writer with the writer wrapped in a BufWriter.
See FileWriter::try_new
for an unbuffered version.
§impl<W> FileWriter<W>where
W: Write,
impl<W> FileWriter<W>where
W: Write,
pub fn try_new(writer: W, schema: &Schema) -> Result<FileWriter<W>, ArrowError>
pub fn try_new(writer: W, schema: &Schema) -> Result<FileWriter<W>, ArrowError>
Try to create a new writer, with the schema written as part of the header
Note the created writer is not buffered. See FileWriter::try_new_buffered
for details.
§Errors
An ‘Err’ may be returned if writing the header to the writer fails.
pub fn try_new_with_options(
writer: W,
schema: &Schema,
write_options: IpcWriteOptions,
) -> Result<FileWriter<W>, ArrowError>
pub fn try_new_with_options( writer: W, schema: &Schema, write_options: IpcWriteOptions, ) -> Result<FileWriter<W>, ArrowError>
Try to create a new writer with IpcWriteOptions
Note the created writer is not buffered. See FileWriter::try_new_buffered
for details.
§Errors
An ‘Err’ may be returned if writing the header to the writer fails.
pub fn write_metadata(
&mut self,
key: impl Into<String>,
value: impl Into<String>,
)
pub fn write_metadata( &mut self, key: impl Into<String>, value: impl Into<String>, )
Adds a key-value pair to the FileWriter’s custom metadata
pub fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
pub fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
Write a record batch to the file
pub fn finish(&mut self) -> Result<(), ArrowError>
pub fn finish(&mut self) -> Result<(), ArrowError>
Write footer and closing tag, then mark the writer as done
pub fn get_mut(&mut self) -> &mut W
pub fn get_mut(&mut self) -> &mut W
Gets a mutable reference to the underlying writer.
It is inadvisable to directly write to the underlying writer.
pub fn flush(&mut self) -> Result<(), ArrowError>
pub fn flush(&mut self) -> Result<(), ArrowError>
Flush the underlying writer.
Both the BufWriter and the underlying writer are flushed.
pub fn into_inner(self) -> Result<W, ArrowError>
pub fn into_inner(self) -> Result<W, ArrowError>
Trait Implementations§
§impl<W> RecordBatchWriter for FileWriter<W>where
W: Write,
impl<W> RecordBatchWriter for FileWriter<W>where
W: Write,
§fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
fn write(&mut self, batch: &RecordBatch) -> Result<(), ArrowError>
§fn close(self) -> Result<(), ArrowError>
fn close(self) -> Result<(), ArrowError>
Auto Trait Implementations§
impl<W> Freeze for FileWriter<W>where
W: Freeze,
impl<W> RefUnwindSafe for FileWriter<W>where
W: RefUnwindSafe,
impl<W> Send for FileWriter<W>where
W: Send,
impl<W> Sync for FileWriter<W>where
W: Sync,
impl<W> Unpin for FileWriter<W>where
W: Unpin,
impl<W> UnwindSafe for FileWriter<W>where
W: 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
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§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>
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>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request