首页 > 解决方案 > data.table fread() 中是否有更快的方法将大 gz 文件读入内存?

问题描述

我正在尝试读回一个CID-Title.gz从我的计算机磁盘命名的大 gz 文件(大约 1.5 Gb,有两列:第一列是数字,第二列是字符)(最初,我从这里下载了这个文件

我使用data.table::fread()如下:

dat <- data.table::fread(file = "CID-Title.gz", showProgress = TRUE, nThread = 16)

fread阅读此 gz 文件时如何加快速度?还是有其他技巧可以更快地读取大 gz 文件?

标签: rdata.table

解决方案


您可以尝试该软件包(此处vroom为网页,此处为 CRAN 页面)。它读取到一个 tidyverse tibble:我不知道将 tibble 转换为 data.table 对象是否会降低下游性能。

vroom 不会停止实际读取所有数据,它只是索引每条记录所在的位置,以便以后读取。返回的向量使用 Altrep 框架在访问数据时按需延迟加载数据,因此您只需为使用的数据付费。这种惰性访问是自动完成的,因此无需更改您的 R 数据操作代码。

vroom 还使用多个线程进行索引、物化非字符列,以及在写入时进一步提高性能。

vroom 支持自动读取 zip、gz、bz2 和 xz 压缩文件,只需将压缩文件的文件名传递给 vroom。

vroom 基准小插曲

vroom 基准的条形图


推荐阅读