R 中只读镶木地板列名称

Rya*_*ett 5 r parquet

我希望使用 R 中的 arrow 包从镶木地板文件(带分区)中仅获取列名称。我希望获得仅包含列名称的向量。我可以使用收集来完成此操作,但是处理更大的多分区和多文件镶木地板需要比预期更长的时间。这是我所拥有的和希望实现的一个例子。

创建带分区的镶木地板(有些可能有多个分区)

arrow::write_dataset(mtcars, "C:/Data/parquet/mtcars", format = "parquet", partitioning = c("cyl"))
Run Code Online (Sandbox Code Playgroud)

当前获取镶木地板列名称的方法

colnames(arrow::open_dataset(sources = "C:/Data/parquet/mtcars") %>%
  dplyr::collect())
Run Code Online (Sandbox Code Playgroud)

将 colnames 与collect一起使用的结果

[1] "mpg"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb" "cyl"
Run Code Online (Sandbox Code Playgroud)

我觉得有一种更有效的方法可以在不进行收集的情况下获取镶木地板列名称。最终目标是拥有一个像上面这样的向量。接受各种选择和想法。

Art*_*hur 10

根据文档,Dateset 对象有一个模式方法,您可以从中获取列名称

我认为应该是这样的:

arrow::open_dataset(sources = "C:/Data/parquet/mtcars")$schema$names
Run Code Online (Sandbox Code Playgroud)

这只会加载数据集的元数据,并且应该比加载所有数据快得多。