r语言 - 使数据帧持久化以用于多个请求



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

试试'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

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

最新更新