说我有一个非常大的zip文件(80 GB),其中包含一个大型CSV文件(> 200 GB)。 是否可以提取80GB文件数据的一部分,修改中央目录,然后仅提取那部分数据?
图片表示形式:
我的问题的背景:
我有一个循环过程,对存储在云中的大型压缩CSV文件的特定列进行求和。
我今天要做的是将文件流式传输到磁盘,将其解压缩,然后逐行流式传输文件。这使得磁盘绑定操作非常繁琐。磁盘肯定是瓶颈。
当然,我可以利用其他云服务来更快地获得所需的资源,但这不是免费的。
我很好奇我是否可以通过仅提取1GB的zip子部分直到看不到任何东西来看到速度的提高。
我所知道的:
1:描述文件及其属性的标题
2:压缩格式的原始文件数据
3:中央目录列出了哪些文件开始和停止以及哪些字节
我不知道的东西:
答案 0 :(得分:0)
您始终可以从头开始对进行解压缩,并尽可能地压缩,直到到达所需位置后,仅保留最后一个,例如1 GB。您不能只是在中间某个地方开始解压缩。至少没有普通的.zip文件,而该文件尚未经过特殊的随机访问准备。
中央目录与单个条目的随机访问无关。它所能做的就是告诉您条目从何处开始以及它有多长(压缩和未压缩)。
我建议您将.zip文件重新处理为包含许多(〜200)条目的.zip文件,每个条目的未压缩数量约为1 GB。生成的.zip文件将非常接近相同的大小,但是您可以使用中央目录从200个条目中选择一个,随机访问它,然后仅解压缩该条目。