gpt4 book ai didi

R:从 parquet 文件中读取前 n 行?

转载 作者:行者123 更新时间:2023-12-03 08:03:33 27 4
gpt4 key购买 nike

我意识到 parquet 是一种列格式,但对于大文件,有时您不想在过滤之前将其全部读取到 R 中的内存中,前 1000 行左右可能足以进行测试。我在阅读 Parquet 文档 here 中没有看到选项.

我看到了 pandas 的解决方案 here ,以及 c# 的选项 here ,这两者对我来说都不太明显,如何将它们转换为 R。建议?

最佳答案

感谢 Jon 和 Dan 指出了正确的方向。

arrow::open_dataset() 允许延迟计算(文档[此处][1]),然后您可以从中获取 head() (但不能slice()),或filter()。这个过程更快,并且使用更少的峰值内存。下面的例子。

# https://stackoverflow.com/questions/73131505/r-reading-first-n-rows-from-parquet-file

library(dplyr)
library(arrow)
library(tictoc) #optional, used to time results

tic("read all of large parquet file")
my_animals <- read_parquet("data/my_animals.parquet")
toc() # slow and uses heaps of ram

tic("read parquet and write mini version")
my_animals <- open_dataset("data/my_animals.parquet")
my_animals # this is a lazy object

my_animals %>%
#slice(1000L) %>% #doesn't work
head(n=1000L) %>%
# filter(YEAROFBIRTH >= 2010) %>% #also works
compute() %>%
write_parquet("data/my_animals_mini.parquet") # optional
toc() # much faster, much less peak ram used


[1]: https://arrow.apache.org/docs/r/articles/dataset.html

关于R:从 parquet 文件中读取前 n 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73131505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com