在没有熊猫的情况下从 Python 编写镶木地板文件

Posted

技术标签:

【中文标题】在没有熊猫的情况下从 Python 编写镶木地板文件【英文标题】:Writing parquet files from Python without pandas 【发布时间】:2018-10-14 21:54:37 【问题描述】:

作为 ETL 管道的一部分,我需要将数据从 JSON 转换为 parquet。我目前正在使用pyarrow.Table 的from_pandas 方法进行操作。但是,首先构建数据框感觉是不必要的步骤,而且我想避免将 pandas 作为依赖项。

有没有一种方法可以编写 parquet 文件而无需先将其加载到数据框中?

【问题讨论】:

github.com/jcrobak/parquet-python parquet-python 的自述文件说“目前只有读取支持” 【参考方案1】:

目前,构建 Parquet 最方便的方法是使用 Pandas,因为它已经成熟。尽管如此,pyarrow 也提供了从普通 Python 构建它的表的工具:

import pyarrow as pa

string_array = pa.array(['a', 'b', 'c'])
pa.Table.from_arrays([string_array], ['str'])

由于 Parquet 是一种列式数据格式,因此您必须将数据加载到内存中一次才能执行逐行到列式数据表示的转换。

此时,您还需要立即构造 Arrow 数组;你不能逐步建立它们。将来,我们计划从 C++ 公开(增量)构建器类:https://github.com/apache/arrow/pull/1930

【讨论】:

它只适用于同构数组吗?到目前为止,我没有成功构建一个混合类型的。

以上是关于在没有熊猫的情况下从 Python 编写镶木地板文件的主要内容,如果未能解决你的问题,请参考以下文章

我是不是需要将文件放入熊猫数据框中以放入镶木地板格式?

是否可以直接从文件加载镶木地板?

如何使用熊猫使用 zstandard 压缩镶木地板文件

如何使用 pyarrow 从 S3 读取镶木地板文件列表作为熊猫数据框?

如何在 python 的 S3 中从 Pandas 数据帧写入镶木地板文件

熊猫:从镶木地板文件中读取前 n 行?