从 R 中的文件名指定 Apache Arrow 分区

Specifying Apache Arrow partitioning from file names in R

我正在使用 R 学习 Apache Arrow,我正在努力更好地理解 分区机制。

我有一个包含 5000 多个 CSV 文件的文件夹 结构:cci_v4_2004106_ppz_takuvik_above_45n.csv

library(arrow)
#> 
#> Attaching package: 'arrow'
#> The following object is masked from 'package:utils':
#> 
#>     timestamp

ds <- open_dataset("~/Desktop/ppz/", format = "csv")

ds
#> FileSystemDataset with 5824 csv files
#> longitude: double
#> latitude: double
#> primary_production: double

是否可以从文件名推断分区?例如,我想使用类似的东西:

# ds <- open_dataset("~/Desktop/ppz/", format = "csv", partitioning = c("year", "yday"))

我可以定义一个架构,例如 partitioning = c("year", "yday") 从文件名中获取值(此处:year = 2004,yday = 106)。

reprex package (v2.0.1)

于 2022-03-25 创建

不,今天不存在此功能。分区目前仅限于目录:

/2014/106/ppz_takuvik_above_45n.csv           // "directory" flavor
/year=2014/yday=106/ppz_takuvik_above_45n.csv // "hive" flavor

有一个 open JIRA ticket 用于基于文件名的分区,并且有一个 PR 正在审查中,所以我希望它会在 8.0.0 中可用。

但是,该票据不会完全符合您的描述。它允许您将每个 underscore-separated 元素视为一列,但不会将 2014106 列拆分为 year/yday。另一方面,如果您可以将文件名更改为 2014_106,我想您会没事的。