gpt4 book ai didi

unix - 随机访问 gzip 文件?

转载 作者:行者123 更新时间:2023-12-03 11:07:56 24 4
gpt4 key购买 nike

我在磁盘上有一个用 gzip 压缩的非常大的文件。生产环境是基于“云”的,所以存储性能很差,但CPU还好。以前,我们的数据处理管道始于 gzip -dc从磁盘流式传输数据。
现在,为了并行化工作,我想运行多个管道,每个管道都采用一对字节偏移量 - 开始和结束 - 并获取该文件块。使用纯文件可以通过 head 实现。和 tail ,但我不确定如何有效地使用压缩文件;如果我 gzip -dc和管道进入 head ,靠近文件末尾的偏移对将涉及在整个文件缓慢解压时浪费地搜索。
所以我的问题实际上是关于 gzip 算法 - 理论上是否可以在底层文件中寻找字节偏移量或获取其中的任意块,而没有解压缩整个文件的全部含义?如果不是,我还能如何有效地分区文件以供多个进程“随机”访问,同时最小化 I/O 吞吐量开销?

最佳答案

你不能用 gzip 做到这一点,但你可以用 bzip2 做到这一点,它是块而不是基于流的——这就是 Hadoop DFS 在其 MapReduce 算法中使用不同映射器拆分和并行读取大文件的方式。也许将您的文件重新压缩为 bz2 是有意义的,这样您就可以利用这一点;这比将文件分块的一些特殊方式更容易。

我在这里找到了在 Hadoop 中实现此功能的补丁:https://issues.apache.org/jira/browse/HADOOP-4012

这是关于该主题的另一篇文章:BZip2 file read in Hadoop

也许浏览 Hadoop 源代码会让您了解如何按块读取 bzip2 文件。

关于unix - 随机访问 gzip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com