问题标签 [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 回答
289 浏览

pandas - Dask 数据帧读取镶木地板格式从 http 失败

我已经处理这个问题一周了。我使用命令

我得到了无效的镶木地板魔术。但是 ddf.read_parquet 可以使用“webhdfs://”

我希望 ddf.read_parquet 适用于 http,因为我想在 dask-ssh 集群中为没有 hdfs 访问权限的工作人员使用它。

0 投票
0 回答
774 浏览

python - Pandas 使用列索引读取/写入 Parquet 数据

是否可以pandas使用列索引从 Parquet 文件中选择性地读取行?

同样,在将 Pandas DataFrame 写入 Parquet 文件时,例如 using pd.DataFrame.to_parquet(),是否可以指定要用作 Parquet 列索引的 DataFrame 列或索引级别?

我希望 Parquet 索引的使用可以加快读/写速度。

目前使用 fastparquet 0.4.0、pandas 1.0.3 和 Python 3.8.3。

0 投票
0 回答
389 浏览

python-3.x - 如何离线安装pyarrow、fastparquet?

我想离线安装pyarrow、fastparquet。我在使用 pip 下载 python 包时遇到网络问题,因此尝试从 pypi.org/project/pyarrow/#files 下载 pyarrow 并安装它,但出现错误 C:\Users\Public\pyarrow-0.17.1\setup .py 未找到,请指教。

谢谢你。

0 投票
1 回答
2148 浏览

python - 从 Python 编写嵌套拼花格式

首先免责声明:我对这两个主题(python 和镶木地板)都很陌生,所以如果我的想法很复杂,请与我联系。

我正在寻找有关如何以最有效的方式最好地完成以下转换的一些指导:

我有一个平面 parquet 文件,其中一个 varchar 列将 JSON 数据存储为字符串,我想将此数据转换为嵌套结构,即 JSON 数据变为嵌套 parquet。如果这有任何帮助,我会提前知道 JSON 的模式。

到目前为止,这是我“完成”的事情:


构建样本数据

剧本提案


所以,我这里是我的具体问题:

  1. 这种方法是可行的方法还是可以以任何方式进行优化?dict、df 和 pa table 之间的所有转换都感觉效率不高,很高兴在这里接受教育。
  2. 执行 dict 时如何保留嵌套结构 —> df变换?或者这根本不需要?
  3. 编写嵌套拼花文件的最佳方法是什么?我已经用 Python 阅读了 Parquet 中的嵌套数据,这里提到了快速 Parquet 以供阅读,但缺乏写作能力 - 同时有任何可行的解决方案吗?

非常感谢斯蒂芬

0 投票
1 回答
84 浏览

python - InvalidIndexError 错误映射 dask 系列

此映射在调用head前 100 行时有效:

ddf['val'] = ddf['myid'].map( val['val'] , meta=pd.Series(float) )

但是当我尝试保存到镶木地板时:

我收到一个错误:InvalidIndexError: Reindexing only valid with uniquely valued Index objects

但是检查我的索引(转换为熊猫系列后),它是独一无二的:val.index.duplicated().any()False. 此外,索引与其映射到的数据框列的设置相同:myid. 索引中没有 null、nan 或 None。索引是 int64。

更新:奇怪的是,如果我一次为原始 ddf 加载每个镶木地板文件,这不会出错。如果我一次加载多个,则会出错。

0 投票
0 回答
878 浏览

python - 无法使用 Append=True 存储在镶木地板文件中的 Dask 数据帧上的索引

我有一个用例,我想通过 to_parquet(ddf, 'TestParquet', append=True) 将多个 Dask 数据帧存储到一个公共镶木地板存储中。

parquet 文件的结构是通过写入的第一个数据帧设置的(没有 append=True)。

每个数据框都有分类索引列。

类别从一开始就在所有数据帧中都是已知的,并且没有数据帧具有共同的类别。

数据框在整个类别列表上进行分区(因此每个类别在保存到镶木地板之前都有空分区)。最终,一旦所有 daframe 都保存到 parquet 中,所有类别/分区都将包含数据。

问题:附加第二个数据框后,索引不能用于检索特定类别。

这是一个最小的可重现示例:

熊猫:0.24.2 fastparquet:0.4.1 dask:2.22.0

将第一个 Dataframe 保存到 parquet 后,我​​可以毫无问题地使用索引:

但是,在附加第二个数据帧之后,尝试选择除第一个分区 ('B') 的索引值之外的任何内容都会导致错误:

我不知道为什么在索引中找不到“A”键以及为什么错误建议对分类进行排序,因为在设置索引之前对“名称”类别进行了排序。

一项观察:

  • 而两个数据帧的划分按预期设置为:

    ('A','B','C','D','E','F','F')

保存到 Parquet 并读回数据后,在保存第一个 Dataframe 后,这些分区将重新对齐到第一个 Dataframe 的非空分区: 

因此,我必须使用 ignore_partitions=True 附加第二个 Daframe 否则我收到一个错误,指出分区重叠(这正是我在保存之前对整个列表类别重新分区以尝试从第一个数据帧)。

重置索引和重新索引实际上并不可行,因为实际数据集非常庞大(在保存到 Parquet 之前总共大约 200GB)。

设置每个数据帧的划分以匹配其实际类别,最终会导致相同的错误。

任何帮助将非常感激。

0 投票
1 回答
398 浏览

pandas - 将多个 CSV 转换为单个分区 parquet 数据集

我有一组 CSV 文件,每个文件都有一年的数据,每个文件都有YEAR列。我想将它们转换为按年份划分的单个镶木地板数据集,以供以后在熊猫中使用。问题是所有年份组合的数据框太大而无法放入内存。是否可以逐个迭代地编写镶木地板分区?

fastparquet用作引擎。

简化的代码示例。此代码会破坏内存使用并崩溃。

我试着把岁月一一写出来,就像这样。

数据文件都在各自的YEAR=XXXX目录中,但是当我尝试读取这样的数据集时,我只得到了最后一年。也许可以在编写单独的分区后修复镶木地板元数据?

0 投票
1 回答
469 浏览

python - 将分区 Parquet 文件读取到 Python 中的 DataFame(在内存中),其中列类型是数组的数组

语境

我在 S3 中对 Parquet 文件进行了分区。我想读取它们并将它们连接到一个 DataFrame 中,以便我可以查询和查看数据(在内存中)。到目前为止我已经这样做了,但是类型为 (array<array< double >>)的列数据之一被转换为None其他列(如 str、int 数组等)被正确转换。我不确定我在这个过程中缺少什么。我想在这个转换过程中数据丢失了,或者数据在那里并且我的查询方法是错误的。

到目前为止我所做的步骤

查询结果

请注意,文件中存在数据(双精度数组的数组),因为我可以使用 Athena 查询它。

0 投票
1 回答
391 浏览

python - 如何在 Python 中读取嵌套的结构 Parquet 文件?

我有一个 parquet 文件,其中包含结构列表,我似乎无法使用任何可用的 python parquet 库读取它。其中一些返回错误,指出尚不支持“结构列表”,而其他只是使用 None 对象制作 pandas 数据框。如果有人对此有任何经验,那将有很大帮助。在过去的几天里,我一直在用这个来敲打我的头。有没有其他方法可以以某种方式以编程方式读取文件或将该文件转换为其他格式然后读取它?

我希望可以使用不涉及调用或启动其他服务(如 Spark)的 Python 调用 python 本机支持或 c 库。

0 投票
1 回答
11 浏览

dask - 可以从 fastparquet 获得正确的统计数据

使用 fastparquet 从 S3 读取文件时,我得到无统计信息(最小值/最大值)。打电话时

大多数值是无,并且一些值是有效的。

但是,当我使用其他框架读取相同的文件时,我能够获得所有值的正确最小值/最大值。

我怎样才能得到所有的统计数据?谢谢