1

我正在尝试连接到几分钟前运行良好的 monetdblite 数据库。在另一个会话中关闭连接,重新打开 R 后,我收到此错误消息:

con <- dbConnect(MonetDBLite(), path_db)

Error in MonetDBLite::monetdb_embedded_startup(embedded, !getOption("monetdb.debug.embedded",  : 
  Failed to initialize embedded MonetDB !FATAL: BBPinit: "free" value larger than "size" in heap of bat 9

如果我再试一次,我会得到:

Error in MonetDBLite::monetdb_embedded_startup(embedded, !getOption("monetdb.debug.embedded",  : 
  Failed to initialize embedded MonetDB !FATAL: BBPaddfarm: bad rolemask

我在 R 和 RStudio 中对此进行了尝试。

编辑:感谢您的回复(以及 MonetDbLite 包,顺便说一句)。在我完成创建数据库后发生此错误;我输入了一些数据(大约 2.7e9 行)并成功地与数据库断开连接(即我使用 dbDisconnect(con) 并得到 TRUE 作为结果,这就是为什么我认为还有其他问题)。R版本是3.2.2,服务器是windows server 2012 R2。

Edit2 -> 最小可重现示例:

####### Example
library(data.table)
library(MonetDB.R)
data_orig <- data.table(id=rep(1:1e3,each=sample(100,1)))
data_orig[,y:=rnorm(.N)][,t:=1:.N,by=id]
lu <- data.table(t=1:max(data_orig[["t"]]))

dbdir <- tempdir()
con <- dbConnect(MonetDB.R::MonetDB(), embedded = dbdir)
# Create data
dbWriteTable(con,"data_orig",data_orig)

for(i in data_orig[,unique(id)]){
  print(i)
  query <- paste0("select * from data_orig where id=",i)
  data_i <- dbGetQuery(con,query)
  setDT(data_i)
  tmp <- data_i[lu,roll=T,on="t"]
  dbWriteTable(con,"data_new",tmp,append=T)

}

dbDisconnect(con)

基本上我从数据库中读取数据,聚合它,然后再放回去。

4

0 回答 0