use std::fs::File;
use std::time::SystemTime;
use arrow2::error::Error;
use arrow2::io::parquet::read;
fn main() -> Result<(), Error> {
use std::env;
let args: Vec<String> = env::args().collect();
let file_path = &args[1];
let mut reader = File::open(file_path)?;
let metadata = read::read_metadata(&mut reader)?;
let schema = read::infer_schema(&metadata)?;
let schema = schema.filter(|_index, _field| true);
for field in &schema.fields {
let statistics = read::statistics::deserialize(field, &metadata.row_groups)?;
println!("{statistics:#?}");
}
let row_groups = metadata
.row_groups
.into_iter()
.enumerate()
.filter(|(index, _)| *index == 0 || *index == 1)
.map(|(_, row_group)| row_group)
.collect();
let chunks = read::FileReader::new(reader, row_groups, schema, Some(1024 * 8 * 8), None, None);
let start = SystemTime::now();
for maybe_chunk in chunks {
let chunk = maybe_chunk?;
assert!(!chunk.is_empty());
}
println!("took: {} ms", start.elapsed().unwrap().as_millis());
Ok(())
}