0
library(doParallel)
library(RMySQL)
no_cores <- as.integer(system('getconf _NPROCESSORS_ONLN', intern = TRUE)) - 1
cluster <- makeCluster(no_cores)
registerDoParallel(cl)
clusterEvalQ(
cluster,
mysql <- RMySQL::dbConnect(...)
}
)
r <- foreach(i = 1:50, .verbose = TRUE) %dopar% { dbGetQuery(mysql, 'show tables;')}
no variables are automatically exported
没有错误,没有抱怨。没什么,它只是冻结。我可以启动并使用没有数据库连接的集群。foreach与数据库连接冻结,没有错误,永远
想法?
谢谢Steve,这绝对是最后一部分。我什么也没得到,它只是挂起,所以也许是数据库连接失败。我只是希望有一些输出。我离开它约20分钟,它仍然在那里卡住,没有错误信息或任何东西。我也忽略了在我的例子中添加'registerDoParallel',但它在我的实际中。我会尝试你的建议,并让你知道他们是否有任何工作。感谢您的关注! –
您是否可以扩展一下“避免序列化连接对象”的含义? –
@BrandonBertelsen在我的例子中,如果我在调用'clusterEvalQ'时没有包含'NULL',它会尝试返回由工作人员创建的连接对象列表。由于数据库连接对象包含套接字连接,因此会导致序列化错误。我不认为这会造成任何实际问题,但这令人不安。 –