Alb*_*uez 2 r dplyr data.table apache-arrow
我有一个名为的数据集,df其中有年、月和日变量。我想使用该write_dataset函数输出具有标准箭头数据集语法的文件夹,如下图所示:
每个文件夹内将有month=1、month=2,依此类推。
现在,为了创建它,我使用了以下代码:
df <- df %>% group_by(year, month, day)
output_folder = "my/path"
arrow::write_dataset(df,
output_folder,
format = "parquet",
)
Run Code Online (Sandbox Code Playgroud)
但是,我的数据集太大,我想利用data.table快速分组的优势。我做同样的事情的方法如下:
grouping_cols = c("year", "month", "day")
setkeyv(df, grouping_cols)
arrow::write_dataset(df,
output_folder,
format = "parquet",
)
Run Code Online (Sandbox Code Playgroud)
但是,现在结果未分组,并且返回单个 .parquet 文件(未充分利用 的潜力arrow::write_dataset)。
有没有办法让相同的数据集按指定列进行分组,但基于而data.table不是dplyr分组?
如果您查看文档,默认partitioning参数就是 的dataset内容dplyr::group_vars。该概念不会自动转换为 data.table 模拟,因此如果您不使用对象dplyr作为输入,则必须提供该参数。
arrow::write_dataset(df,
output_folder,
partitioning=grouping_cols,
format = "parquet",
)
Run Code Online (Sandbox Code Playgroud)