【发布时间】:2023-02-19 01:31:13
【问题描述】:
我意识到 parquet 是一种列格式,但对于大文件,有时您不想在过滤之前将其全部读入 R 中的内存,前 1000 行左右可能足以进行测试。我在阅读的镶木地板文档here 中没有看到选项。
我看到了 pandas here 的解决方案和 c# here 的选项,这两者对我来说都不是很明显,它们如何转化为 R。建议?
【问题讨论】:
-
查看文档,箭头似乎给出了懒惰的评估。那么也许你可以
dplyr::slice_head(n=1000) %>% compute()? -
不幸的是,
arrow::read_parquet()似乎没有使用惰性评估,基于我对 a) 读取所有文件的时间和最大内存使用的测试,与 b) 您建议的slice()的管道实现相比。 - 两者都提供相似的结果。 -
我认为如果您使用
arrow::open_dataset(),它将索引 parquet 数据集并将其设置为惰性评估。更多信息:arrow.apache.org/docs/r/articles/dataset.html -
@Jon 是正确的,
arrow::open_dataset()似乎允许延迟评估。惰性对象与slice()不兼容,但head()或filter()有效。一个好的结果 - 谢谢!