java用par连接数据库_foreach%dopar%RPostgreSQL

我正在使用RPostgreSQL连接到本地数据库 . 该设置在我的Linux机器上运行正常 . R 2.11.1,Postgres 8.4 .

我使用多核(doMC)并行后端玩'foreach'来包装一些重复查询(编号为几千)并将结果附加到数据结构中 . 奇怪的是,如果我使用%do%但是当我切换到%dopar%时会失败,只有一次迭代时会出现异常(如下所示)

我想知道它是否与单个连接对象有关,所以我创建了10个连接对象,并且取决于我是什么,为该查询给出了某个con对象,具体取决于i modulo 10.(仅在下面表示2个连接对象) . 被评估的表达式eval(expr.01),包含/是取决于'i'的查询 .

我无法理解这些特定的错误消息 . 我想知道是否有任何方法可以使这项工作 .

谢谢 .

Vishal Belsare

R片段如下:

> id.qed2.foreach

+ if (i %% 2 == 0) {con

+ if (i %% 2 == 1) {con

+ fetch(dbSendQuery(con,eval(expr.01)),n=-1)$idreuters};

> id.qed2.foreach

[[1]]

[1] 411 414 2140 2406 4490 4507 4519 4570 4571 4572 4703 4731

[109] 48765 84312 91797

> id.qed2.foreach

+ if (i %% 2 == 0) {con

+ if (i %% 2 == 1) {con

+ fetch(dbSendQuery(con,eval(expr.01)),n=-1)$idreuters};

Error in stop(paste("expired", class(con))) :

no function to return from, jumping to top level

Error in stop(paste("expired", class(con))) :

no function to return from, jumping to top level

Error in { :

task 1 failed - "error in evaluating the argument 'res' in selecting a method for function 'fetch'"

>

编辑:我改变了一些东西,(仍然不成功),但有一些事情被曝光 . 在循环中创建的连接对象并未通过dbDisconnect“断开连接”,导致挂起连接,如Postgres的/ var / log所示 . 我这样做时会出现一些新的错误消息:

> system.time(

+ id.qed2.foreach

.packages=c("DBI", "RPostgreSQL")) %dopar% {drv0

con0

list(idreuters=fetch(dbSendQuery(con0,eval(expr.01)),n=-1)$idreuters);

dbDisconnect(con0)})

Error in postgresqlExecStatement(conn, statement, ...) :

no function to return from, jumping to top level

Error in postgresqlExecStatement(conn, statement, ...) :

no function to return from, jumping to top level

Error in postgresqlExecStatement(conn, statement, ...) :

no function to return from, jumping to top level

Error in { :

task 1 failed - "error in evaluating the argument 'res' in selecting a method for function 'fetch'"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值