【问题标题】:Read a partitioned parquet dataset from multiple files with PyArrow and add a partition key based on the filename使用 PyArrow 从多个文件中读取分区 parquet 数据集,并根据文件名添加分区键
【发布时间】:2021-11-21 12:28:51
【问题描述】:

我有一堆 parquet 文件,每个文件都包含我的数据集的一个子集。假设文件名为data-N.parquetN 是一个整数。

我可以全部阅读它们并随后转换为 pandas 数据框:

files = glob.glob("data-**.parquet")
ds = pq.ParquetDataset(
    files,
    metadata_nthreads=64,
).read_table(use_threads=True)
df = ds.to_pandas()

这很好用。它希望在最终数据框中增加一列,指示数据来自哪个文件。

据我了解,ds 数据是分区的,每个文件一个分区。因此,需要在数据框中包含分区键。

这可行吗?

【问题讨论】:

  • 如果它是一个对您有用的功能,它似乎会成为一个好的 JIRA。大部分基础工作都是为了启用该功能。
  • @Pace 感谢您的建议,这里是:issues.apache.org/jira/browse/ARROW-14176

标签: python parquet pyarrow apache-arrow


【解决方案1】:

分区键目前包含在数据框中。但是,所有现有的分区方案都使用目录名称作为键。因此,如果您的数据是 /N/data.parquet/batch=N/data.parquet,就会发生这种情况(您需要在读取数据集时提供一个分区对象)。

今天(在 pyarrow 中)无法获取返回结果中的文件名。

【讨论】:

    猜你喜欢
    • 2018-08-09
    • 2019-06-26
    • 2021-03-26
    • 2018-06-08
    • 2020-04-25
    • 2021-05-26
    • 2020-02-25
    • 2017-03-28
    • 2016-04-28
    相关资源
    最近更新 更多