fastparquet和pyarrow之间的比较?

mos*_*evi 12 python parquet dask fastparquet pyarrow

经过一番搜索我没有找到一个彻底的比较fastparquetpyarrow

我找到了这篇博客文章(速度的基本比较)。

还有一个github 讨论,声称使用github 创建的文件fastparquet不支持AWS-athena(顺便说一句,情况仍然如此吗?)

什么时候/为什么要在另一个上使用?主要优点和缺点是什么?


我的特定用例是处理数据,方法是将数据dask写入s3,然后使用AWS-athena进行读取/分析。

mon*_*nth 20

然而,由于问题缺乏具体的标准,而且我来这里是为了一个好的“默认选择”,我想声明DataFrame 对象的pandas 默认引擎是 pyarrow(请参阅pandas 文档)。


小智 9

我将fastparquet和pyarrow都用于将protobuf数据转换为parquet,并使用Athena在S3中对其进行查询。但是,在我的用例(这是lambda函数)中,这两种方法都有效,软件包zip文件必须轻巧,因此请使用fastparquet。(fastparquet库仅约1.1mb,而pyarrow库为176mb,Lambda软件包限制为250mb)。

我使用以下内容将数据帧存储为实木复合地板文件:

from fastparquet import write

parquet_file = path.join(filename + '.parq')
write(parquet_file, df_data)
Run Code Online (Sandbox Code Playgroud)

  • aws-data-wrangler 提供经过优化的预构建层。它们包括 PyArrow,绝对是当今在 Lambda 中使用 Parquet 的最简单方法:https://github.com/awslabs/aws-data-wrangler (3认同)
  • 我想指出的是,在安装“fastparquet”时,我今天得到了“正在下载 fastparquet-0.4.1.tar.gz (28.6 MB)”。 (2认同)

mdu*_*ant 6

我要指出速度比较的作者也是pyarrow的作者:)我可以谈谈fastparquet案例。

从您的角度来看,最重要的是要了解兼容性。Athena 不是 fastparquet(或 pyarrow)的测试目标之一,因此您应该在做出选择之前进行彻底的测试。对于日期时间表示、空值、类型,您可能想要调用 ( docs )的许多选项,这些选项可能对您很重要。

使用 dask 写入 s3 当然是 fastparquet 的测试用例,我相信 pyarrow 也应该没有问题。

  • 那么为什么以及什么时候我会使用一个而不是另一个? (7认同)
  • 我想指出的是,上述答案的作者也是 fastparquet 的贡献开发人员:) (7认同)

np8*_*np8 2

到 2024 年,决定应该是显而易见的:使用 pyarrow 而不是 fastparquet

\n\n
\n

在我们最近的 parquet 基准测试和弹性测试中,我们通常发现 pyarrow 引擎比 fastparquet 引擎能够更好地扩展到更大的数据集,并且与 fastparquet 相比,使用 pyarrow 运行时可以成功完成更多的测试用例。

\n
\n
\n

pyarrow 库有一个更大的开发团队来维护它,并且\n似乎未来会有更多的社区支持。

\n
\n