У меня есть запрос на объединение данных. Вместо того, чтобы ждать обработки всех пакетов, я хотел бы запустить некоторый код, как только первый пакет будет готов.
Вот код ожидания и обработки:
let dataframe = ExecutionContext::new().read_parquet(filename)?;
let batchs = dataframe.collect().await?;
for batch in batchs {
// Do something with the record batch
println!("{:?}", batch.schema());
}
Я хотел бы что-то, что вернет мне не обещание массива BatchRecord, а скорее массив обещаний BatchRecord. Предоставляет ли DataFusion способ получить только первый пакет, не дожидаясь полной обработки файла паркета?
В настоящее время у меня время загрузки при запуске составляет 5 + мин, и это просто непрактично. Прямое использование Arrow & Parquet позволило бы мне сразу получить доступ к первой партии (с обменом api / features).
Изменить: минимальный пример можно найти в DataFusion git репозиторий
dataframe
уже является итератором, обещающим что-то. Итак, просто перебратьdataframe
безcollect
? - person Jmb   schedule 13.10.2020Arc<dyn DataFrame>
, поскольку чертаDataFrame
не подходит для реализацииIterator
. - person Jeremy Cochoy   schedule 14.10.2020