【发布时间】:2012-04-17 07:47:59
【问题描述】:
我有一个包含以下源代码的 R 脚本:
genofile<-read.table("D_G.txt", header=T, sep=',')
genofile<-genofile[genofile$"GC_SCORE">0.15,]
cat(unique(as.vector(genofile[,2])), file="GF_uniqueIDs.txt", sep='\n')
D_G.txt 是一个巨大的文件,大约 5 GB。
现在,计算是在 Microsoft HPC 集群上执行的,因此,如您所知,当我提交作业时,它会在不同的物理节点上“拆分”;就我而言,每个都有 4 GB 的 RAM 内存。
好吧,经过一段时间后,我收到了臭名昭著的错误cannot allocate vector of size xxx Mb 消息。我尝试使用限制可用内存的开关:
--max-memory=1GB
但没有任何改变。
我已经尝试了 32 位和 64 位的 Rscript 2.15.0,但没有成功。
【问题讨论】:
-
看来这样的工作不需要集群。在这种情况下,您可以读取文件并逐行过滤。但是,如果您需要加快处理速度,那么您可能需要将文件拆分为单独的块,并按照 Paul 的建议在不同的节点上处理它们。当然,请添加一些代码,如何在 R 中启动集群并将作业发送到节点。我认为这会有所帮助。
-
感谢@DrDom,我终于拆分了文件(请在 Paul 的回答下查看我的评论)