如何基于data.table分组写入Arrow数据集?
回答
直接使用arrow::write_dataset的partitioning参数显式指定分区列即可,无需依赖data.table的键或分组设置,这是Arrow生成分区数据集的标准方式,代码如下:
grouping_cols <- c("year", "month", "day") output_folder <- "my/path" arrow::write_dataset( df, path = output_folder, format = "parquet", partitioning = grouping_cols )
关键说明
partitioning是write_dataset专门用于定义数据集分层规则的参数,无论输入是data.table、普通data.frame还是dplyr分组对象,只要指定该参数就能生成对应的分层文件夹结构。- 之前dplyr分组能生效,是因为
write_dataset会自动识别dplyr分组对象的分组键作为分区列,但data.table的setkeyv设置不会被该函数识别,因此必须显式声明partitioning。 - 这种方式既保留了data.table处理大数据集的高效性,又能完全符合Arrow数据集的结构规范。
内容的提问来源于stack exchange,提问作者Alberto Agudo Dominguez
相关产品推荐
相关产品推荐

