使Dataframe保持多个请求的持久性

时间:2017-04-04 17:54:26

标签: r data-science

我有一个保存在RData文件中的大型稀疏矩阵。访问此矩阵的脚本将从控制台调用RScript开始。在脚本的每次调用中加载此矩阵都需要时间和资源。有没有办法在内存中保存矩阵,以便来自控制台的多个调用可以使用矩阵,而不必每次都将其作为对象加载?

2 个答案:

答案 0 :(得分:1)

试试'bigmatrix'套餐。基本上你创建一个调用'big.matrix()'的矩阵,然后通过调用'describe()'获得该矩阵的钩子。然后可以使用钩子的内容使用'attach.big.matrix()'将已经加载的矩阵附加到另一个进程中。

编辑一个例子:

开始2个R会话,1& 2

第1节

require(bigmemory)
system.time(M <- matrix(rnorm(1e8), 1e4)) # ~9"
format(object.size(M), "Mb") # ~762Mb
system.time(M <- as.big.matrix(M)) # ~ 3"

hook = describe(M)
saveRDS(hook, "shared-matrix-hook.rds")
M[1:3,1:3]
第2节

require(bigmemory)
system.time(hook <- readRDS("shared-matrix-hook.rds")) # 0.001"

system.time(Mshared <- attach.big.matrix(hook)) # 0.002"

Mshared[1:3,1:3] # shows the same as session 1 did
Mshared[2,2] = 0 # check on session 1 that this change is present there

答案 1 :(得分:0)

共享大数据的问题不应该从根本上引入一种可以像内存数据库一样使用数据共享的架构吗?