我有一个数据流查询。我希望在第一批处理就绪后立即运行一些代码,而不是等待所有批处理完成。
下面是等待然后处理的代码:
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+min加载时间,这是不实际的。直接使用Arrow & Parquet将允许我立即访问第一批(通过api/功能交易)。
编辑:可以在DataFusion git repository中找到最小的示例
发布于 2020-11-09 11:47:12
自2.0.0版本以来,主分支中有一些最近的更改,以更好地支持异步和流,因此值得检查最新的代码,但DataFrame collect方法确实在返回之前将所有结果加载到内存中,因此这可能不是最好的方法。
在Arrow邮件列表中询问这个问题可能也是个好主意。
https://stackoverflow.com/questions/64333797
复制相似问题