fastparquet:如何禁用 rle 编码

Posted

技术标签:

【中文标题】fastparquet:如何禁用 rle 编码【英文标题】:fastparquet : how to disable rle encoding 【发布时间】:2017-05-10 16:57:23 【问题描述】:

我正在使用 fastparquet 将 pandas 数据帧转换为 parquet 文件。它比我之前使用 pyspark 的方法快得多。

我想使用 spark 读取这些 parquet 文件,即

 sqlCtx.read.parquet('/tmp/parquet/test.parquet')

我遇到了一些我设法解决的问题。我现在遇到的问题是 RLE 编码。当我尝试使用 pyspark 读取镶木地板文件时出现以下 java 异常:

Unsupported encoding: RLE

在使用 fastparquet write 方法时有没有办法禁用 RLE?

【问题讨论】:

【参考方案1】:

这是 fastparquet 中针对短整数('int8'、'int16'、'uint8'、'uint16')的优化。不幸的是,spark 不支持完整的镶木地板规范。

如果你希望你的数据可以被 spark 读取,你应该首先转换 32 位或 64 位的整数列。

已经考虑实施一种“兼容模式”,以牺牲性能为代价解决这些问题,但目前还没有具体计划。

【讨论】:

以上是关于fastparquet:如何禁用 rle 编码的主要内容,如果未能解决你的问题,请参考以下文章

算法题:RLE压缩算法(游程编码)的Java实现

算法题:RLE压缩算法(游程编码)的Java实现

行程长度编码的RLE 压缩算法的基本原理

在 R 中,使用 rle(运行长度编码)的结果,包括命名的行和列标题

如何使用 dask/fastparquet 从多个目录中读取多个 parquet 文件(具有相同架构)

6.2RLE算法的机制