You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arrow包是否有原生函数获取已打开Hive风格数据集的分区名向量?

利用Arrow原生函数提取Hive分区目录值用于MPI并行读取

在集群环境中,我通过pbdMPI实现MPI多节点并行,结合arrow和dplyr包读取超大规模Parquet数据集。这类Hive结构的分区目录(比如示例中以flightDate=YYYY-MM-DD命名的子目录)非常适合实现arrow-dplyr的目录批次并行读取——我需要提取分区目录中的值生成字符向量,传入dplyr::filter()让每个MPI进程独立读取对应子目录的数据块。

示例目录结构

'/dir1/dir2/flightDate=2022-04-17/dir3/part-0.parquet'
'/dir1/dir2/flightDate=2022-05-18/dir3/part-0.parquet'
'/dir1/dir2/flightDate=2022-06-18/dir3/part-0.parquet'
'/dir1/dir2/flightDate=2022-07-19/dir3/part-0.parquet'
'/dir1/dir2/flightDate=2022-08-19/dir3/part-0.parquet'
'/dir1/dir2/flightDate=2022-09-19/dir3/part-0.parquet'
'/dir1/dir2/flightDate=2022-10-20/dir3/part-0.parquet'

目标输出向量

我需要从上述目录中提取日期值,生成如下字符向量:

dates = c('2022-04-17', '2022-05-18', '2022-06-18', '2022-07-19', '2022-08-19', '2022-09-19',  '2022-10-20')

向量用途示例

该向量用于MPI进程的任务拆分,让每个进程读取不同的数据块:

library(pbdMPI)
library(arrow)
library(dplyr)

my_dates = dates[comm.chunk(length(dates), form = "vector")]
my_data = ds %>% filter(flightDate %in% my_dates) %>% collect()

核心问题

目前我可以通过list.dirs()结合字符串处理实现分区值提取,但想知道是否存在Arrow原生函数可以直接完成这个操作?理想状态是在执行ds = arrow::open_dataset(<filename>)后,直接操作包含目录信息的ds对象来获取分区值。


内容的提问来源于stack exchange,提问作者George Ostrouchov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:02:53