我设法加载了一个基于rust的apache::arrow实现的示例和文档的拼图文件。
use parquet::arrow::{ParquetFileArrowReader, ArrowReader};
use std::rc::Rc;
use arrow::record_batch::RecordBatchReader;
let file = File::open(&Path::new("./path_to/file.parquet")).unwrap();
let file_reader = SerializedFileReader::new(file).unwrap();
let mut arrow_reader = ParquetFileArrowReader::new(Rc::new(file_reader));
println!("Converted arrow schema is: {}", arrow_reader.get_schema().unwrap());
let mut record_batch_reader = arrow_reader.get_record_reader(2048).unwrap();我能够显示每个批次的列的名称和类型:
loop {
let record_batch = record_batch_reader.next_batch().unwrap().unwrap();
if record_batch.num_rows() > 0 {
println!("Schema: {}.", record_batch.schema());
}
}但我对如何显示列的内容感到相当困惑。如何检索第一列的内容并打印它?
发布于 2020-10-12 18:14:44
apache的最后一个版本箭头接缝有一个漂亮的类。不幸的是,这不在最后一个可用的包(1.0.1)中。
use arrow::util::pretty;
pretty::print_batches(&batch);手动的方法是通过向下转换。
// For an int:
let col = batch.column(0).as_any().downcast_ref::<arrow::array::Int32Array>();
// For a Utf8 string:
let col = batch.column(0).as_any().downcast_ref::<arrow::array::StringArray>();然后,您可以简单地打印它:
println!("Columns: {:?}.", col);https://stackoverflow.com/questions/64315820
复制相似问题