如何将 kdb 表持久保存到压缩镶木地板中?

问题描述 投票:0回答:1

我正在尝试以压缩的 apache parquet 格式存储/保留 kdb 表。 我最初的计划基本上是使用 embedPyfastparquetpyarrow.parquet 转换为可在 q 内使用。 然后,我将使用 kdb+ 刻度架构来处理传入的刻度并运行每日批量 parquet 写入磁盘。 这是个好主意吗?否则将大量数据保存到磁盘的最佳方法是什么?谢谢

parquet kdb pyarrow fastparquet
1个回答
0
投票

我回答这个问题有点晚了,但我认为我的经验可能对其他人有帮助。

我工作的一家对冲基金中,我们同时拥有 parquet 和 kdb,并且都存储了期货的价格变动数据。他们最初想要 parquet 的原因是它非常适合存储压缩数据(比 kdb 使用的 gzip 效率高约 10%)。 parquet 的问题在于,它通过二进制存储以及通过每个文件存储元数据(也以二进制形式存储)来获得这种额外的压缩。这两个“功能”使得镶木地板一旦存储在光盘上就很难使用,因为在查看之前需要将它们转换为文本。 kdb 具有类似的压缩功能,但读取/打印会自动将数据转换为文本,以便在浏览器中轻松阅读。所以最后,我们将所有 parquet 数据转换为 kdb,并使用内置的 sql 功能直接从 C++、Python 或直接从浏览器命令行查询数据。

总而言之,kdb vs parquet

  1. Parquet 的压缩效果稍好,但它是他们自己的,而 kdb 使用 gzip(一种常见的压缩过程)。
  2. Parquet 很难在文件/光盘级别使用,因为压缩信息以二进制形式存储在 Parquet 文件/文件夹中。 kdb 在文件级别要好得多,因为它可以直接从浏览器查看,并且使用任何操作系统都熟知的文件夹结构进行存储。
  3. 从开发和处理的角度来看,Parquet 较慢,因为它比 kdb 缺乏一些内置功能,如 SQL、并行处理、结构化存储。
© www.soinside.com 2019 - 2024. All rights reserved.