限制使用dplyr collect返回的行与r中的parquet数据



我希望限制从拼花文件返回的行数,希望使用dplyr::collect。我知道head()可用于限制行数,但我认为首先需要收集所有行。我已经看到dplyr::collect(n=10)与数据库一起使用,但我无法使这项工作与拼花文件。我正在处理的一些花束有数百万行,我正在寻找一种高效的选择。以下是到目前为止使用的代码片段:

返回有限行数的方法

arrow::open_dataset(source = "C:/data/parquet/members") %>%
dplyr::collect() %>%
head(1000)

不返回限定行数的方法

arrow::open_dataset(source = "C:/data/parquet/members") %>%
dplyr::collect(n=1000)

下面的工作,有没有更高效的方法?

head(arrow::open_dataset(sources = "C:/data/parquet/members"), 1000) %>%
dplyr::collect()

您发现的方法:

head(arrow::open_dataset(sources = "C:/data/parquet/members"), 1000) %>%
dplyr::collect()

是解决这个问题的最好方法。需要先应用head操作,再应用collect操作。这应该不会读取整个数据集,并且应该是高效的。

注意:虽然它总是返回1000行,但它可能需要读取略多于给定的预读配置&在您的拼花文件中的行组大小。

注2:在某些情况下,您可能会得到令人惊讶和/或不确定的结果:https://issues.apache.org/jira/browse/ARROW-13893

最新更新