问题标签 [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.
python - 无法使用 fastparquet 读取镶木地板文件,但可以使用 pyarrow - 可为空的整数
目前正在运行一些这样的代码:
由于文件很大,所以我遇到了内存消耗问题,所以我想调查一下是否fastparquet
可以更好地使用内存。
当我切换引擎时:
此行现在会引发如下错误:
我相信这是因为我有一个包含空值的整数字段。我找不到任何说明这不受支持的文档。
关于为什么会发生这种情况或在仍然使用 fastparquet 时如何解决的任何想法?
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。
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 文件未访问正确上下文/路径中的数据。
我应该如何修改上面的代码,以及在管道中的这些步骤之间传递数据的最佳/规范方法是什么?(欢迎任何其他关于常见/最佳实践的建议)
python - 跳过 fastparquet 中大型二进制字段的元数据
如果数据集有一列包含大量二进制数据(例如图像或声波数据),那么计算该列的最小/最大统计数据在计算和存储需求方面都会变得昂贵,尽管完全无用(显然按范围查询这些值没有意义)。
这会导致大型、高度分区的 parquet 数据集的元数据规模呈爆炸式增长。有没有办法告诉 fastparquet不计算某些列的统计信息,或者 Parquet 格式是否要求每列都存在这些统计信息?
pandas - 将 NaN 浮点数转换为 Parquet 格式的其他类型
我目前正在处理一堆 CSV 文件并将它们转换为 Parquet。我将这些与 Hive 一起使用并直接查询文件。我想切换到 Dask 进行数据处理。我正在阅读的数据具有可选列,其中一些是布尔类型。我知道 Pandas 目前不支持可选的 bool 类型,但是无论如何要指定 FastParquet 或 PyArrow 我希望字段是什么类型?我对 DF 中的 float64 数据感到满意,但由于现有文件已经是可选的布尔类型,因此无法在 Parquet 存储中使用它。
pandas - 使用 pandas 从 AWS S3 读取镶木地板文件
我尝试从 AWS S3 读取镶木地板文件。
相同的代码适用于我的 Windows 机器。
谷歌搜索没有结果。
Pandas 应该使用 fastparquet 来构建数据框。fastparquet 已安装。
代码:
我得到以下异常:
软件和操作系统版本
解决方法
python - 未找到符号:_PyClass_Type
我将在 macOS Sierra (10.12.6) 上使用 pyCharm从fastparquet运行一些测试,但一直失败:
我已经安装了 boost-python3 但这似乎并没有解决问题。
python - python dask to_parquet 占用大量内存
我正在使用带有 dask 的 python 3 来读取 parquet 文件列表,进行一些处理,然后将其全部放入一个新的联合 parquet 文件中以供以后使用。
该进程使用了太多内存,以至于它似乎在将所有 parquet 文件写入新 parquet 文件之前尝试将它们读入内存。
我正在使用以下代码
每次使用一个工作人员时,尤其是使用更多工作人员时,内存都会爆炸。这些文件很大(每个大约 1G),我试图从 csv 文件中读取信息并将它们分成 25M 块,并遇到了同样的问题。
我在这里想念什么?当迭代过程似乎在这里做正确的事情时,为什么它会尝试将所有内容加载到内存中?我怎样才能使用 dask 操作来做到这一点,而不会炸毁我在那台机器上的 128G 内存?
PS我尝试使用pyarrow引擎,但问题是附加尚未在dask中实现。
编辑:尝试了建议的解决方案:我现在试试这个代码
尽管如此,内存还是会爆炸(在内存超过 200G 的系统上)
dask - 更新到最新版本后使用 fastparquet 打开 parquet 文件的问题
我有一堆这样创建的镶木地板文件:
我曾经读过这样的列子集:
在更新到dask 2.2.0
最新的 fastparquet 之前,它可以正常工作。现在我收到了这些消息。在执行读取命令时:
并在调用计算时:
有什么改变吗?
dask - Dask - 获取 Dask 数据帧中每个分区的行长的最快方法
我想获得多个数据帧中每个分区的长度。我目前正在获取每个分区,然后获取每个分区的索引大小。这是非常非常缓慢的。有没有更好的办法?
这是我的代码的简化片段:
我注意到,在阅读镶木地板时,我不能简单地使用镶木地板信息(这非常快),因为在阅读后,我会进行一些逐个分区的处理,然后删除 NaN。这是我想要的每个分区的后处理长度。