在第一列的 R 中查询内存不足 60gb tsv,哪个数据库/方法?
Posted
技术标签:
【中文标题】在第一列的 R 中查询内存不足 60gb tsv,哪个数据库/方法?【英文标题】:Querying out of memory 60gb tsv's in R on the first column, which database/method? 【发布时间】:2019-02-15 20:47:43 【问题描述】:我有 6 个 60gb(未压缩)的大型 tsv 矩阵,包含 2000 万行 x 501 列:第一个索引/整数列基本上是行号(因此甚至没有必要),500 列是数字列(浮点数,4 位小数,例如1.0301)。所有 tsv 具有相同数量的相互对应的行。
我需要提取行号上的行。
我需要提取最多 5,000 个连续行或最多 500 个非连续行;所以不是数百万。希望也有某种压缩来减少 60gb 的大小,所以也许没有 SQL?最好的方法是什么?
我尝试的一种方法是将它们分成 100 个 gzip 压缩文件,使用 tabix 对其进行索引,然后查询它们,但这对于我的需要来说太慢了(500 个随机行需要 90 秒)。
我阅读了 ff 包,但没有找到如何按第一列索引?
还有其他方法吗?
非常感谢。
【问题讨论】:
【参考方案1】:我将使用来自data.table
包的fread()
使用参数skip
和nrows
,您可以使用要读取的起始行(skip
)或要读取的行数(nrows
)
如果您想探索tidyverse
方法,我向您推荐此解决方案R: Read in random rows from file using fread or equivalent?
【讨论】:
我怀疑 fread 是否会按行快速查询,因为它需要每次都读取文件结构,但会试一试,谢谢。我更多的是寻找按行号索引/查询的内存映射文件结构以上是关于在第一列的 R 中查询内存不足 60gb tsv,哪个数据库/方法?的主要内容,如果未能解决你的问题,请参考以下文章