java - 压缩/序列化/操作大量数据的有效方法

标签 java python performance

我有一个包含 25,000 个 float (, 分隔)的文件,并且有大约 100K 个这样的行。一行文件看起来像这样:

1689.97,-9643.39,-82082.1,9776.09,-33974.84,-67247.38,32997.34,72811.53,31642.87,-949.6,9340.68,-85854.48,-17705.36,187.74,-3002.6,-35812.21,37382.32,22770.78,40893.09,45743.99,-6500.92,26243.85,13975.95,0,56669.47,-25865.36,-17066.78,26788.57,0,-36554.86,-3687.19,18933.93

我有一个由两部分组成的问题。

  1. 有没有一种方法(在 Java 或 Python 中)可以有效地压缩数据而不会对性能产生太大影响。压缩将每天进行一次,但必须经常读取数据。
  2. 数据能否以压缩形式进行操作,例如我想在不解压的情况下聚合前 10 行的前 10 列。这样我就不必担心频繁读取压缩数据。其中一项挑战是将 25,000 个字符串转换为 float 以进行加法运算。

我查看了 gzipzcat,它们是不错的选择。但我想找到一些压缩或序列化算法来通过 Java/Python 存储数据并在不解压缩的情况下执行读取。

最佳答案

在 Java 中,您可以使用 GZIPOutputStream 包装您的 OutputStream以及带有 GZIPInputStreamInputStream使用 GZIP 算法即时压缩/解压缩您的数据。

关于java - 压缩/序列化/操作大量数据的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759586/

相关文章:

java - 如何在 Eclipse 中显示 SonarLint?

java - java中的单词正则表达式

python - Anaconda 错误 - 模块 'brotli' 没有属性 'error'

python - Python中的最小曲面解决方案

Java - 记住/保存输入字段的程序

python - docker compose up 生成 (2005, "Unknown MySQL server host ' db' (-2)") 错误

c# - Entity Framework 在 x64 和 x86 上的启动速度要慢得多

PHP:如何按字母顺序对数组的值进行排序?

mysql数据库自动分区

java - 为什么 JUnit "Run as->JUnit"和 "Cover as -> Junit"有不同的行为?