问题标签 [fastparquet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3686 浏览

python - 是否有任何 Python 库支持将结构数组写入 Parquet 文件?

我想将某些列是字符串数组或结构数组(通常是键值对)的数据写入 Parquet 文件以在 AWS Athena 中使用。

在找到两个支持写入 Parquet 文件的 Python 库(Arrow 和 fastparquet)后,我一直在努力尝试实现结构数组。

编写 Parquet 文件的问题的最佳答案列出了这两个库(并提到缺少对嵌套数据的支持)。

那么有没有办法从 Python 将嵌套数据写入 Parquet 文件?


为了存储键/值,我使用Arrow尝试了以下操作。

当我运行代码时,我收到以下消息:

最近 Arrow JIRA 票证中包含相同错误消息的答案表明正在进行支持结构的工作,尽管我不清楚它是否涵盖写入或仅读取这些结构。


当我尝试使用fastparquet存储数据时(就像我有一个字符串列表时一样):

没有给出错误消息,但在 parquet-tools 中查看时,我注意到数据是 Base64 编码的 JSON。

我猜这是意料之中的,因为fastparquet 不支持嵌套对象数组

0 投票
1 回答
818 浏览

parquet - 在单个多核机器上索引大型 dask 数据帧时的内存使用情况

我正在尝试将Wikipedia CirrusSearch 转储转储为 Parquet 支持的 dask 数据帧,该数据帧由 450G 16 核 GCP 实例上的标题索引。CirrusSearch 转储以单个 json 行格式文件的形式出现。英文 Wipedia 转储包含 5M 记录,压缩为 12G,扩展为 90+G。一个重要的细节是记录并不完全平坦。

最简单的方法是

第一个问题是默认调度器只使用一个内核。这个问题可以通过明确使用分布式或多处理调度程序来避免。

我尝试过的所有调度程序和设置的更大问题是内存使用。似乎 dask 在索引时尝试将整个数据帧加载到内存中。即使是 450G 的 RAM 也不够用。

  • 如何减少此任务的内存使用量?
  • 如何在不进行反复试验的情况下估算所需的最小内存?
  • 有更好的方法吗?
0 投票
1 回答
3397 浏览

python - 使用 dask read_parquet 方法过滤会产生不需要的结果

我正在尝试使用dask read_parquet方法和filterskwarg 读取镶木地板文件。但是它有时不会根据给定条件进行过滤。

dates示例:使用列创建和保存数据框

当我从文件夹中读取并过滤dates列时,'test_par'它似乎不起作用

正如您在输出中看到的那样,2018-07-03并且2018-07-04存在。

难道我做错了什么 ?还是我应该在 github 上报告这个?

0 投票
2 回答
1204 浏览

python - 在不读取文件的情况下使用 parquet 文件统计信息

据我了解,镶木地板文件具有列的最小/最大统计信息。我的问题是如何在不读取整个文件的情况下使用 python 读取这些统计信息?

如果有帮助,我也有_common_metadata文件_metadata


我的具体问题是获取此文件系统中每个证券交易所分区的最大日期(每个年份分区包含多个具有日期列的镶木地板文件):

0 投票
5 回答
33042 浏览

python - fastparquet 和 pyarrow 的比较?

经过一番搜索,我未能找到fastparquet和的彻底比较pyarrow

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

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

我何时/为什么要使用其中一个?主要优点和缺点是什么?


我的具体用例是处理数据并将dask其写入 s3,然后使用 AWS-athena 读取/分析它。

0 投票
1 回答
1158 浏览

python-3.x - 它是 fastparquet 模块中的错误吗

我正在使用 AWS sagemaker Jupiter 笔记本并收到以下错误:

我注意到该属性名为 snappy.compress。不应该是带有下划线的 snappy_compress 吗?

0 投票
1 回答
871 浏览

python-3.x - 无法读取 parquet 文件,导致 Gzip 代码失败错误

我正在尝试使用 pyarrow 将镶木地板转换为 csv 文件。

上面的代码适用于从 github 下载的示例 parquet 文件。

但是当我尝试使用实际的大型镶木地板文件时,会出现以下错误。

我也尝试使用 fastparquet 和 pyspark 读取 parquet 文件。但我收到了类似的 GZip 错误。

我知道这是压缩或未压缩的镶木地板文件,与我下载的样本不同。

请建议任何代码或提供任何其他工具将此类镶木地板文件转换为 csv 文件将有很大帮助。谢谢。

编辑:与 parquet 中通常的字符串值相比,这些 parquet 文件似乎是二进制格式。有没有办法读取二进制镶木地板?

0 投票
3 回答
4576 浏览

python-3.x - 为什么索引名称总是出现在用 pandas 创建的 parquet 文件中?

我正在尝试使用 pandas 数据框创建镶木地板,即使我删除了文件的索引,当我重新读取镶木地板文件时它仍然会出现。谁能帮我这个?我希望 index.name 设置为None

0 投票
2 回答
6305 浏览

python - Athena 如何从 S3 存储桶中读取镶木地板文件

我正在将一个 python 项目(s3 + Athena)从使用 csv 移植到镶木地板。

我可以制作parquet文件,可以通过Parquet View查看。

我可以将文件上传到 s3 存储桶。

我可以创建指向 s3 存储桶的 Athena 表。

但是,当我在 Athena Web GUI 上查询表时,它运行了 10 分钟(似乎永远不会停止)并且没有显示结果。

整个项目很复杂。我试图简化案例。

1.假设,我们有以下csv文件(test.csv)

2.然后,我使用以下python(2.7)代码将其转换为镶木地板文件(test.parquet)

3.通过 s3 Web GUI 将 test.parquet 上传到 s3 存储桶文件夹“abc_bucket/abc_folder”

4.通过Athena Web GUI创建下表

5.最后,在 Athena 上运行以下 SQL。SQL 运行 10 分钟,似乎永远存在。

我的问题是上面哪一步是错误的,所以我无法从 Athena 查询表。

非常感谢您提供任何帮助。

0 投票
1 回答
375 浏览

python - 需要计算数据框列时使用 dask 进行并行计算

我有一个 3.6 亿记录的观鸟数据数据 框,我想以分布式方式在此处输入图像描述 计算每种鸟类的质心作为年日的函数。dask

我想要做:

但我需要先计算yearday,我不知道是否有办法使用dask. 我希望 dask 可能只是将新数据保留给dask工作人员,但是当我尝试时:

它不能扩展。

如果有人想实际尝试,可以像这样加载数据:

注意:虽然我称这个数据集EOD_CLO_2016.parq.gz为,但它被分块在 S3 存储桶中的许多对象上以促进并行化。每个块都被压缩。

有没有办法以分布式方式即时进行计算,或者我需要在使用 yearday 列之前编写另一个数据文件groupby来执行可扩展部分?