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

python - 如何在没有足够 RAM 的情况下使用 Pandas 打开巨大的镶木地板文件

read_parquet我正在尝试使用 Pandas函数将一个相当大的 Parquet 文件(约 2 GB,约 3000 万行)读入我的 Jupyter Notebook(在 Python 3 中) 。我还安装了函数用作 parquet 文件引擎的pyarrowfastparquet库。read_parquet不幸的是,似乎在阅读时,我的计算机死机了,最终我收到一条错误消息,说它内存不足(我不想重复运行代码,因为这会导致另一个冻结 - 我不知道逐字错误消息)。

有没有一种好方法可以以某种方式将镶木地板文件的某些部分写入内存而不会发生这种情况?我知道镶木地板文件是柱状的,可能无法仅将部分记录存储到内存中,但如果有解决方法,或者看看我在尝试时是否做错任何事情,我可能会将其拆分读这个。

就规格而言,我确实有一台相对较弱的计算机,只有 6 GB 内存和 i3。CPU 为 2.2 GHz,可使用 Turbo Boost。

0 投票
1 回答
8363 浏览

apache-spark - 使用 Struct 列类型读/写 Parquet

我正在尝试将这样的 Dataframe 写入 Parquet:

我正在使用 Pandas 和 Fastparquet:

我想在 (py)Spark 中加载 Parquet,并使用 Spark SQL 查询数据,例如:

我的问题是,即使fastparquet可以正确读取其 Parquet 文件(该bar字段被正确反序列化为 Struct),在 Spark 中bar也被读取为 String 类型的列,它只包含原始结构的JSON 表示:

我尝试从 PyArrow 编写 Parquet,但没有运气:ArrowNotImplementedError: Level generation for Struct not supported yet. 我也尝试过传递file_scheme='hive'给 Fastparquet,但我得到了相同的结果。将 Fastparquet 序列化更改为 BSON ( object_encoding='bson') 会产生不可读的二进制字段。

[编辑]我看到以下方法:

  • [已回答]从 Spark 编写 Parquet
  • [open]找到一个 Python 库,它实现了Parquet 的嵌套类型规范,并且与 Spark 读取它们的方式兼容
  • [已回答]使用特定的 JSON 反序列化读取 Spark 中的 Fastparquet 文件(我想这会对性能产生影响)
  • 不要完全使用嵌套结构
0 投票
0 回答
123 浏览

parallel-processing - 使用 pyarrow 和 s3 的 dask 计算出现不同的错误

我正在使用 pyarrow 使用 dask 进行一些 groupby 并行计算,以从 s3 加载镶木地板文件。但是,同一段代码可能会随机运行或失败(带有不同的错误消息)。使用 fastparquet 时发生了同样的问题:

或因其他错误而失败:

我使用的 dask 调度程序是进程。它适用于线程,但会非常慢。这种行为是否适用于 dask?

0 投票
1 回答
422 浏览

azure - 将数据从数据库移动到 Azure Blob 存储

我可以使用dask.dataframe.read_sql_table来读取数据,例如df = dd.read_sql_table(table='TABLE', uri=uri, index_col='field', npartitions=N)

将其保存为 Azure Blob 存储中的镶木地板文件的下一个(最佳)步骤是什么?

根据我的小型研究,有两种选择:

0 投票
1 回答
179 浏览

pandas - Dask 无法从简单(非 Hive)Parquet 文件中恢复分区

我有一个关于 Dask+Parquet 的两部分问题。我正在尝试对从分区 Parquet 文件创建的 dask 数据帧运行查询,如下所示:

我的目标是能够使用 dask 并行快速过滤和处理各个分区,如下所示:

我很喜欢使用 Hive 风格的 Parquet 目录,但我注意到与直接从单个 parquet 文件中读取相比,它的操作时间要长得多。

有人可以告诉我实现这一目标的惯用方式吗?对于 Dask/Parquet 来说还是相当新的,所以如果这是一种令人困惑的方法,我们深表歉意。

0 投票
1 回答
654 浏览

azure - dask:从 Azure blob 读取镶木地板 - AzureHttpError

dask.dataframe.to_parquet我使用(将数据从数据库移动到 Azure blob 存储)在 Azure blob 中创建了一个 parquet 文件。

我现在想阅读那个文件。我正在做:

但我得到一个AzureHttpError

0 投票
1 回答
973 浏览

python - Fastparquet 在使用 dataframe.to_parquet() 时给出“TypeError:预期的 str、字节或 os.PathLike 对象,而不是 _io.BytesIO”

我正在尝试为 AWS Lambda 创建代码以将 csv 转换为镶木地板。我可以使用 Pyarrow 做到这一点,但它的大小太大(未压缩约 200 MB),因此我无法在 Lambda 的部署包中使用它。我正在尝试使用 BytesIO 库直接将镶木地板文件写入 s3 存储桶。

下面是我的 lambda 函数代码:

当我在 dataframe.to_parquet() 中使用“fastparquet”作为引擎时,出现以下错误:

有谁知道如何解决这一问题?

0 投票
1 回答
445 浏览

python - 是否可以在磁盘上存储镶木地板文件,同时附加并按索引检索行?

我有 185 个数据文件,总共包含 3000 万行。每两个有两列;我想用作索引的单个 int 和 512 个 int 的列表。

所以它看起来像这样

数据太大而无法加载到内存中,但我想使用索引列表一次检索几百行。

我从这条评论中得到了使用 Parquet 的建议。 将 pandas 数据帧或 2d numpy 数组保存到 h5py 中的最有效方法,每行一个单独的键,使用一列

我一直在看官方的 parquet python guide

https://arrow.apache.org/docs/python/parquet.html

快速镶木地板指南

https://fastparquet.readthedocs.io/en/latest/api.html

但我似乎找不到任何方法来使用索引检索行,以及表是否存储在磁盘上,或者是否全部加载到内存中。

这可能吗?如果是这样,我将如何做这样的事情?

例如

ParquetTable[22861131, 15760716]

[0, 48156, 154, 6304, 43611, 11, 9496, 8982, 1... [0, 40883, 4086, 11, 5, 18559, 1923, 1494, 4, ...

0 投票
0 回答
378 浏览

jupyter-notebook - 无法在 jupyter notebook 中安装 fastparquet

我正在尝试安装 fastparquet 以便将 csv 写入 parquet 文件。使用 jupyter notebook,python 3,运行以下命令后单元格不显示任何结果:

pip install fastparquet

我运行另一个简单的命令,它显示了结果。我安装了另一个软件包,它运行良好,但 fastparquet 没有安装,没有显示任何错误。
那么,我该如何解决这个问题?

0 投票
0 回答
291 浏览

python - “S3File”对象没有“强制”属性

尝试使用 fastparquet lib 在 S3 中附加 parquet 文件,出现以下错误:

文件“/Users/baluinfo/PycharmProjects/untitled/rough.py”,第 55 行,在 write(parqKey, ws1,write_index=False,append=True,compression='GZIP', open_with=myopen) 文件“/Users/baluinfo /PycharmProjects/Dash/venv/lib/python3.7/site-packages/fastparquet/writer.py”,第 881 行,在写入压缩、open_with、has_nulls、追加)文件“/Users/baluinfo/PycharmProjects/Dash/venv/ lib/python3.7/site-packages/fastparquet/writer.py”,第 735 行,在 write_simple 中,open_with(fn, mode) 为 f:文件“/Users/baluinfo/PycharmProjects/Dash/venv/lib/python3.7 /site-packages/fsspec/spec.py”,第 775 行,在打开的 **kwargs 文件中“/Users/baluinfo/PycharmProjects/Dash/venv/lib/python3.7/site-packages/s3fs/core.py”,第 378 行,在 _open autocommit=autocommit 中,requester_pays=requester_pays) 文件“/Users/baluinfo/PycharmProjects/Dash/venv/lib/python3.7/site-packages/s3fs/core.py”,第 1097 行,在init cache_type=cache_type) 文件 "/Users/baluinfo/PycharmProjects/Dash/venv/lib/python3.7/site-packages/fsspec/spec.py", 第 1062 行, init raise NotImplementedError("文件模式不支持") NotImplementedError:不支持文件模式在以下位置忽略异常:Traceback(最近一次调用最后一次):文件“/Users/baluinfo/PycharmProjects/Dash/venv/lib/python3.7/site-packages/fsspec/spec.py”,第 1343 行,在del self.close() 文件“/Users/baluinfo/PycharmProjects/Dash/venv/lib/python3.7/site-packages/fsspec/spec.py”中,第 1321 行,如果不是 self.forced,则关闭:AttributeError :“S3File”对象没有“强制”属性