我如何将每个Parquet行组读入一个单独的分区?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何将每个Parquet行组读入一个单独的分区?相关的知识,希望对你有一定的参考价值。

我有一个包含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行组读入一个单独的分区中?还是必须将数据分发到不同的文件中才能起作用?

答案

我相信fastparquet将分别读取每个行组,并且pyarrow显然不被认为是bug或至少可以在dask问题跟踪器上请求的功能增强这一事实。我倾向于同意每个包含一个行组的文件集和一个包含相同行组的文件应产生相同的分区结构。

以上是关于我如何将每个Parquet行组读入一个单独的分区?的主要内容,如果未能解决你的问题,请参考以下文章

Azure Blob (pyarrow) 上的分区 Parquet 文件

如何将 Parquet 文件读入 Pandas DataFrame?

如何让 Spark 使用 Parquet 文件中的分区信息?

在 Spark 中对 RDD 执行 group by 并将每个组写入单独的 Parquet 文件

从多个火花工人以镶木地板格式保存

Oracle SQL - 过滤掉包含具有特定值的行的分区或行组