【问题标题】:How can I read each Parquet row group into a separate partition?如何将每个 Parquet 行组读入单独的分区?
【发布时间】:2020-01-30 14:27:15
【问题描述】:

我有一个包含 10 个行组的镶木地板文件:

In [30]: print(pyarrow.parquet.ParquetFile("/tmp/test2.parquet").num_row_groups)
10

但是当我使用 Dask Dataframe 加载它时,它会被读入单个分区:

In [31]: print(dask.dataframe.read_parquet("/tmp/test2.parquet").npartitions)
1

这似乎与 this answer 相矛盾,后者指出 Dask Dataframe 将每个 Parquet 行组读入一个单独的分区。

如何使用 Dask Dataframe 将每个 Parquet 行组读入单独的分区?还是必须将数据分布在不同的文件中才能正常工作?

【问题讨论】:

    标签: python dataframe dask parquet


    【解决方案1】:

    我相信 fastparquet 会分别读取每个行组,并且 pyarrow 显然不会被视为错误或至少是您可以在 dask 问题跟踪器上请求的功能增强。我倾向于同意一组包含一个行组的文件和一个包含相同行组的单个文件应该导致相同的分区结构。

    【讨论】:

      【解决方案2】:

      我可以使用带有pyarrow 的批次阅读。

      import pyarrow as pq
      batch_size = 1
      _file = pq.parquet.ParquetFile("file.parquet")
      batches = _file.iter_batches(batch_size) #batches will be a generator
      
      for batch in batches:
        process(batch)
      
      

      【讨论】:

        猜你喜欢
        • 2012-09-13
        • 2021-11-03
        • 1970-01-01
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-04
        相关资源
        最近更新 更多