2011-07-14 74 views
1

快速问题:我正在使用RODBC连接以批处理模式并行运行多个R实例,并且随机出现一个(或多个)实例失败。如果我回去逐个运行实例,它们都是成功的。日志中没有错误,我只是试图推断问题来自哪里。我的主要假设是,我打到内存堆顶部,实例失败,或者(更可能)RODCB连接出现某种时间。有什么建议么?R实例失败+ RODBC

感谢,

吉姆

+0

有什么错误讯息?你连接的是什么类型的RDBMS? – NPE

+0

您需要在跌倒之前运行多少个实例? 2? 1000?你能否添加一些额外的日志记录来查看它究竟何时崩溃? –

+1

开放连接也有限制,无论是在操作系统级别还是在R级别。你能打这些吗? –

回答

2

目前尚不清楚为什么没有错误显示,或许你可以尝试options(error = recover)

经常拿下面的错误使用多个数据库连接时:

Error in mysqlExecStatement(conn, statement, ...) : 
    RS-DBI driver: (connection with pending rows, close resultSet before continuing) 

我通过发出以下行来关闭所有打开的连接,然后发出新的查询来避免此错误:

lapply(dbListConnections(MySQL()), dbDisconnect) 

我把这段代码从R help list


更新:我的合作者之一创建了一个suite of functions便于数据库的交互,包括db.condb.opendb.closedb.query,可以像使用:

## load functions 
source("https://raw.github.com/PecanProject/pecan/master/db/R/utils.R") 

## example 
params <- list(dbname = "mydb", username = "myname", password = "!#@?$") 
con <- db.open(params) 
mydata <- db.query("select * from mytable;") 
db.close(con)