我正在尝试从R访问SQL Server数据库,并且需要使用doSNOW并行化过程以提高吞吐量。在设置集群时,我首先初始化连接,但是对于集群中的某些核心,数据库连接会失败而无需说明。
cl <- makeCluster(10)
registerDoSNOW(cl)
clusterEvalQ(cl, {
library(RODBC)
dbhandle <- odbcDriverConnect(%connectionstring%)
})
此代码将显示连接列表,并且在某些连接已成功初始化的同时,其他连接已失败(返回-1)。这是随机发生的,每次运行代码时,不同的连接都会失败。
[[1]]
[1] -1
[[2]]
RODBC Connection 1
Details:
case=nochange
DRIVER=SQL Server
SERVER=redacted
UID=
Trusted_Connection=Yes
WSID=redacted
DATABASE=redacted
[[3]]
[1] -1
[[4]]
RODBC Connection 1
Details:
case=nochange
DRIVER=SQL Server
SERVER=redacted
UID=
Trusted_Connection=Yes
WSID=redacted
DATABASE=redacted
答案 0 :(得分:1)
根据评论,添加sleep(Sys.getpid()/1000)
可解决问题
clusterEvalQ(cl, {
sleep(Sys.getpid()/1000)
library(RODBC)
dbhandle <- odbcDriverConnect(%connectionstring%)
})