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

pandas - Dask DataFrame to_parquet 返回字节而不是写入文件

是否可以将 dask/pandas DataFrame 写入镶木地板而不是返回字节字符串?to_parquet()我知道接受文件路径的函数是不可能的。也许,您还有其他方法可以做到这一点。如果不可能做这样的事情,添加这样的功能是否有意义?理想情况下,它应该是这样的:

谢谢!

0 投票
1 回答
439 浏览

python - 有什么好方法可以将 Spark RDD 的内容读入 Dask 结构

目前,在处理复杂的嵌套结构时,Spark 结构和 Dask 之间的集成似乎很麻烦。尽管镶木地板加载是正在进行的大量工作的一部分(fastparquet,pyarrow),但专门转储具有嵌套结构以供 Dask 读取的 Spark Dataframe 似乎还不是很可靠;

所以我的后续问题 - 假设我可以在 Spark 中进行一些转换并将 DataFrame 转换为包含自定义类对象的 RDD;有没有办法可靠地使用自定义类对象转储 Spark RDD 的数据并在 Dask 集合中读取它?显然,您可以将 rdd 收集到 python 列表中,对其进行腌制,然后将其作为普通数据结构读取,但这消除了加载大于内存数据集的机会。dask 可以使用火花酸洗之类的东西来加载分布式泡菜吗?

0 投票
1 回答
731 浏览

python - Fastparquet 似乎没有下压过滤器

我使用 dask 的数据框to_parquet方法创建了一个镶木地板文件,并将其fastparquet用作引擎。使用 i 读取文件fastparquet.ParquetFile得到以下信息。

​</p>

所以字段是正确的。由于它们是时间序列数据,因此使用月份和日期对数据进行分区。数据总数为22815984。现在我尝试使用过滤器关键字阅读镶木地板,但我得到了一个奇怪的行为。

这是正确的,过滤被推倒了。当我将过滤器更改为另一个字段时,

它取回所有数据

手动执行它,它可以工作:

还将过滤器更改为不存在的字段,不会引发任何异常,所以这也很奇怪。关于镶木地板和过滤,我有什么遗漏吗?

0 投票
5 回答
5023 浏览

python - Pandas 数据框类型 datetime64[ns] 在 Hive/Athena 中不起作用

我正在开发一个 python 应用程序,它只是将 csv 文件转换为 hive/athena 兼容的 parquet 格式,我正在使用 fastparquet 和 pandas 库来执行此操作。csv 文件中有时间戳值2018-12-21 23:45:00,需要将其写入timestampparquet 文件中的类型。下面是我正在运行的代码,

代码运行成功,下面是熊猫创建的数据框

+50942-11-30 14:00:00.000最后,当我在 Hive 和 athena中查询 parquet 文件时,时间戳值是2018-12-21 23:45:00

非常感谢任何帮助

0 投票
2 回答
3155 浏览

python-3.x - 流式镶木地板文件python并且仅下采样

我有镶木地板格式的数据,太大而无法放入内存(6 GB)。我正在寻找一种使用 Python 3.6 读取和处理文件的方法。有没有办法流式传输文件,下采样并保存到一个dataframe?最终,我希望有dataframe格式的数据可以使用。

在不使用 Spark 框架的情况下尝试执行此操作是错误的吗?

我尝试过使用pyarrowfastparquet但在尝试读取整个文件时出现内存错误。任何提示或建议将不胜感激!

0 投票
1 回答
5019 浏览

python - Python Pandas 使用 Fastparquet 将 CSV 转换为 Parquet

我在我的 PyCharm venv 中使用 Python 3.6 解释器,并尝试将 CSV 转换为 Parquet。

Error-1 ImportError:无法找到可用的引擎;尝试使用:'pyarrow'、'fastparquet'。拼花支持需要 pyarrow 或 fastparquet

解决方案-1 安装了 fastparquet 0.2.1

错误 2 文件“/Users/python parquet/venv/lib/python3.6/site-packages/fastparquet/compression.py”,第 131 行,在 compress_data(算法,排序(压缩)))中 RuntimeError: Compression 'snappy'无法使用。选项:['GZIP','未压缩']

我安装了python-snappy 0.5.3但仍然出现同样的错误?我需要安装任何其他库吗?

如果我使用PyArrow 0.12.0引擎,我不会遇到这个问题。

0 投票
2 回答
10083 浏览

python - 无法读取镶木地板文件

我现在正在为此烦恼。我是这个parquet文件的新手,我遇到了很多问题。

OSError: Passed non-file path: \datasets\proj\train\train.parquet每次尝试从中创建一个错误时,都会引发一个错误df

我试过这个: pq.read_pandas(r'E:\datasets\proj\train\train.parquet').to_pandas()od = pd.read_parquet(r'E:\datasets\proj\train\train.parquet', engine='pyarrow')

我还更改了数据集所在驱动器的驱动器号,它是一样的!

所有引擎都一样。

请帮忙!

0 投票
0 回答
117 浏览

dask - 为什么对从 Parquet 文件构建的 Dask DataFrame 进行分类会大大增加其大小?

这是原型场景:

  1. 我从一组由 FastParquet 编写的 Parquet 文件构造了一个 Dask DataFrame
  2. categorize()在 DataFrame 上运行。相当多的类别成为新的“已知”。
  3. 我通过 FastParquet 将 DataFrame 保存到一个新的 Parquet 文件集

新的 Parquet 文件现在占用的磁盘空间是原来的几倍!现在,我关心的不是磁盘空间——我有足够的空间——而是我寻求理解:

即使原始文件集的类别不是“已知的”,它们仍然必须在文件集的磁盘空间中的某个地方。如果有的话,如果原始文件集的分类列一开始没有使用字典,我可能会预期磁盘使用量会减少。

所以,是的,只是试图理解。是什么赋予了?

0 投票
0 回答
1263 浏览

python - 无法将 fastparquet 导入 Python 笔记本

我正在尝试安装fastparquet以便将熊猫数据框转换为镶木地板文件。但即使我在跑步时得到以下信息pip install fastparquet

当我尝试在我的 Jupyter 笔记本中导入它时 - 显示以下错误:

ImportError: cannot import name unpack_byte_array

此外,我也研究过pyarrow但由于包之间的冲突而无法正确安装它。

0 投票
0 回答
703 浏览

pandas - 将许多大型 Pandas DataFrames 保存到单个 Parquet 文件中而不加载到内存中

我想尝试将许多无法立即放入内存的大型 Pandas DataFrame 保存到单个 Parquet 文件中。我们希望在磁盘上有一个大的 parquet 文件,以便从那个大文件中快速获取我们需要的列。

具体来说,我们有大约 200 个小型 parquet 文件,每个文件有大约 100 列(基因)和 200 万行(单元格)。磁盘上的每个 parquet 都非常小,大约 40MB,所有大约 200 个 Parquet 文件的总数约为 8GB。数据非常稀疏(>90% 的值为零),Parquet 可以很好地将磁盘上的数据压缩到较小的大小。

由于数据集是稀疏的,我们可以使用 Pandas/Scipy 稀疏数组将所有约 25,000 个基因(列)和 200 万行(单元格)加载到单个稀疏数据结构中。但是,我们不能将 SparseDataFrame 直接写入 Parquet(参见 Github 问题https://github.com/pandas-dev/pandas/issues/26378),将整个矩阵转换为密集矩阵会导致内存不足(例如2,000 列/基因和 200 万行/细胞的密集阵列占用 30GB 的 RAM)。这会阻止我们生成我们想要的单个大型 Parquet 文件。

Peter Hoffmann 的演示文稿(https://youtu.be/fcPzcooWrIY?t=987 at 16min 20second)提到您可以将数据流式传输到 Parquet 文件(保留有关元数据的记录),而无需将所有数据保存在内存中。是否可以将列/行流式传输到镶木地板文件中?我找不到使用 Pandas 的示例。PyArrow 或 FastParquet 支持这个吗?