【问题标题】:uncompress a big .gz file解压缩一个大的 .gz 文件
【发布时间】:2024-01-09 23:23:01
【问题描述】:

我需要解压缩从 Kaggle 下载的 transactions.gz 文件;大约 (2.86 GB),3.5 亿行,11 列。

我在 RStudio、Windows Vista、32 位、RAM:3 GB 上试过:

transactions <- read.table(gzfile("E:/2014/Proyectos/Kaggle/transactions.gz"))
write.table(transactions, file="E:/2014/Proyectos/Kaggle/transactions.csv")

但我在控制台上收到此错误消息

> transactions <- read.table(gzfile("E:/2014/Proyectos/Kaggle/transactions.gz"))
Error: cannot allocate vector of size 64.0 Mb
> write.table(transactions, file="E:/2014/Proyectos/Kaggle/transactions.csv")
Error: cannot allocate vector of size 64.0 Mb

我检查了这个案例,但它对我不起作用:Decompress gz file using R

如果有任何建议,我将不胜感激。

【问题讨论】:

  • 你在哪个平台上?如果基于 linux,您可以与 unix/shell 终端交互并在将其带入 R 之前对其进行处理。
  • 谢谢,现在我有我的 .csv 文件

标签: r compression kaggle


【解决方案1】:

此文件解压缩为 22GB 的 .csv 文件。您无法在 6GB 机器上的 R 中一次性处理所有内容,因为 R 需要将所有内容读入内存。最好在像 postgresql 这样的 RDBMS 中处理它。如果您打算使用 R,您可以分块处理它,一次读取可管理数量的行:读取一个块,处理它,然后用下一个块覆盖。对于这个data.table::fread 会比标准的read.table 更好。

哦,不要在 R 中解压缩,只需从命令行运行 gunzip,然后处理 csv。如果您使用的是 Windows,则可以使用 winzip 或 7zip。

【讨论】:

  • 我不喜欢删除其输入文件的应用程序,因此不直接使用gunzip。相反,我将使用gzip -c -d
  • 好的,但这会打印到标准输出并需要重定向,对吧? gzip -c -d file.csv.gz &gt; file.csv,或zcat file.csv.gz &gt; file.csv。可能gunzip -k file.csv.gz 最简单。
  • 非常感谢您的帮助
  • 好的,祝你比赛好运。我也在 Shoppers 中。
  • 很好,我将探索购买行为以进行预测。
最近更新 更多