Derive Macro parquet_derive::ParquetRecordWriter [−][src]
#[derive(ParquetRecordWriter)]
Expand description
Derive flat, simple RecordWriter implementations. Works by parsing
a struct tagged with #[derive(ParquetRecordWriter)]
and emitting
the correct writing code for each field of the struct. Column writers
are generated in the order they are defined.
It is up to the programmer to keep the order of the struct fields lined up with the schema.
Example:
ⓘ
use parquet; use parquet::record::RecordWriter; use parquet::schema::parser::parse_message_type; use std::sync::Arc; #[derive(ParquetRecordWriter)] struct ACompleteRecord<'a> { pub a_bool: bool, pub a_str: &'a str, } let schema_str = "message schema { REQUIRED boolean a_bool; REQUIRED BINARY a_str (UTF8); }"; pub fn write_some_records() { let samples = vec![ ACompleteRecord { a_bool: true, a_str: "I'm true" }, ACompleteRecord { a_bool: false, a_str: "I'm false" } ]; let schema = Arc::new(parse_message_type(schema_str).unwrap()); let props = Arc::new(WriterProperties::builder().build()); let mut writer = SerializedFileWriter::new(file, schema, props).unwrap(); let mut row_group = writer.next_row_group().unwrap(); samples.as_slice().write_to_row_group(&mut row_group).unwrap(); writer.close_row_group(row_group).unwrap(); writer.close().unwrap(); }