问题标签 [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 投票
0 回答
576 浏览

python - 无法使用 fastparquet 读取镶木地板文件,但可以使用 pyarrow - 可为空的整数

目前正在运行一些这样的代码:

由于文件很大,所以我遇到了内存消耗问题,所以我想调查一下是否fastparquet可以更好地使用内存。

当我切换引擎时:

此行现在会引发如下错误:

我相信这是因为我有一个包含空值的整数字段。我找不到任何说明这不受支持的文档。

关于为什么会发生这种情况或在仍然使用 fastparquet 时如何解决的任何想法?

0 投票
2 回答
8351 浏览

python - 用数组读取 Parquet 文件> 专栏

我正在使用 Dask 读取由 PySpark 生成的 Parquet 文件,其中一列是字典列表(即array<map<string,string>>')。df 的一个例子是:

使用时engine='fastparquet,Dask 可以很好地读取所有其他列,但会None为复杂类型的列返回 s 列。当我设置engine='pyarrow'时,我得到以下异常:

许多谷歌搜索清楚地表明,现在并不真正支持使用嵌套数组读取列,而且我不完全确定处理这个问题的最佳方法是什么。我想我的选择是:

  • 一些如何告诉 dask/fastparquet 使用标准json库解析列。架构很简单,如果可能的话就可以完成这项工作
  • 看看我是否可以重新运行生成输出的 Spark 作业并将其另存为其他内容,尽管这几乎不是一个可接受的解决方案,因为我的公司到处都使用镶木地板
  • 将映射的键转换为列,并使用 dtype 将数据分解为多个列,list并注意这些列中的数据通过索引相互关联/映射(例如,0这些键/列中 idx 中的元素都来自同一来源)。这会起作用,但坦率地说,让我心碎:(

我很想听听其他人是如何绕过这个限制的。我的公司经常在他们的 parquest 中使用嵌套数组,因此我不想放弃使用 Dask。

0 投票
1 回答
851 浏览

python - 如何将 Databricks 笔记本生成的数据传递给 Python 步骤?

我正在构建一个 Azure 数据工厂 v2,其中包括

  • 从 Azure Blob 存储中查询大型表并生成表格结果的 Databricks 步骤intermediate_table
  • 一个 Python 步骤(它做了几件事,放在一个笔记本中会很麻烦)来读取processed_table并生成最终输出。

看起来像这样

在此处输入图像描述

笔记本生成了一个pyspark.sql.dataframe.DataFrame我尝试将其保存为镶木地板格式的尝试,例如

或者

现在,我希望 Python 步骤重新读取中间结果,最好使用postprocess.py具有类似语法的文件

fastparquet在我的 Databricks 集群中安装后。
这是(不足为奇......)失败并出现错误,例如

FileNotFoundError:[Errno 2] 没有这样的文件或目录:'./my_processed_table'

我假设找不到该文件,因为 Python 文件未访问正确上下文/路径中的数据。

我应该如何修改上面的代码,以及在管道中的这些步骤之间传递数据的最佳/规范方法是什么?(欢迎任何其他关于常见/最佳实践的建议)

0 投票
1 回答
59 浏览

python - 跳过 fastparquet 中大型二进制字段的元数据

如果数据集有一列包含大量二进制数据(例如图像或声波数据),那么计算该列的最小/最大统计数据在计算和存储需求方面都会变得昂贵,尽管完全无用(显然按范围查询这些值没有意义)。

这会导致大型、高度分区的 parquet 数据集的元数据规模呈爆炸式增长。有没有办法告诉 fastparquet计算某些列的统计信息,或者 Parquet 格式是否要求列都存在这些统计信息?

0 投票
1 回答
852 浏览

pandas - 将 NaN 浮点数转换为 Parquet 格式的其他类型

我目前正在处理一堆 CSV 文件并将它们转换为 Parquet。我将这些与 Hive 一起使用并直接查询文件。我想切换到 Dask 进行数据处理。我正在阅读的数据具有可选列,其中一些是布尔类型。我知道 Pandas 目前不支持可选的 bool 类型,但是无论如何要指定 FastParquet 或 PyArrow 我希望字段是什么类型?我对 DF 中的 float64 数据感到满意,但由于现有文件已经是可选的布尔类型,因此无法在 Parquet 存储中使用它。

0 投票
2 回答
6109 浏览

pandas - 使用 pandas 从 AWS S3 读取镶木地板文件

我尝试从 AWS S3 读取镶木地板文件。

相同的代码适用于我的 Windows 机器。

谷歌搜索没有结果。

Pandas 应该使用 fastparquet 来构建数据框。fastparquet 已安装。

代码:

我得到以下异常:

软件和操作系统版本

解决方法

0 投票
0 回答
473 浏览

python - 未找到符号:_PyClass_Type

我将在 macOS Sierra (10.12.6) 上使用 pyCharm从fastparquet运行一些测试,但一直失败:

我已经安装了 boost-python3 但这似乎并没有解决问题。

0 投票
2 回答
1154 浏览

python - python dask to_parquet 占用大量内存

我正在使用带有 dask 的 python 3 来读取 parquet 文件列表,进行一些处理,然后将其全部放入一个新的联合 parquet 文件中以供以后使用。

该进程使用了​​太多内存,以至于它似乎在将所有 parquet 文件写入新 parquet 文件之前尝试将它们读入内存。

我正在使用以下代码

每次使用一个工作人员时,尤其是使用更多工作人员时,内存都会爆炸。这些文件很大(每个大约 1G),我试图从 csv 文件中读取信息并将它们分成 25M 块,并遇到了同样的问题。

我在这里想念什么?当迭代过程似乎在这里做正确的事情时,为什么它会尝试将所有内容加载到内存中?我怎样才能使用 dask 操作来做到这一点,而不会炸毁我在那台机器上的 128G 内存?

PS我尝试使用pyarrow引擎,但问题是附加尚未在dask中实现。

编辑:尝试了建议的解决方案:我现在试试这个代码

尽管如此,内存还是会爆炸(在内存超过 200G 的系统上)

0 投票
0 回答
127 浏览

dask - 更新到最新版本后使用 fastparquet 打开 parquet 文件的问题

我有一堆这样创建的镶木地板文件:

我曾经读过这样的列子集:

在更新到dask 2.2.0最新的 fastparquet 之前,它可以正常工作。现在我收到了这些消息。在执行读取命令时:

并在调用计算时:

有什么改变吗?

0 投票
1 回答
1095 浏览

dask - Dask - 获取 Dask 数据帧中每个分区的行长的最快方法

我想获得多个数据帧中每个分区的长度。我目前正在获取每个分区,然后获取每个分区的索引大小。这是非常非常缓慢的。有没有更好的办法?

这是我的代码的简化片段:

我注意到,在阅读镶木地板时,我不能简单地使用镶木地板信息(这非常快),因为在阅读后,我会进行一些逐个分区的处理,然后删除 NaN。这是我想要的每个分区的后处理长度。