English 中文(简体)
百分比+
原标题:foreach %dopar% + RPostgreSQL

我正在利用RPostgreSQL与当地数据库连接。 安装工作对我的无赖机器进行罚款。 R 2.11.1, Postgres 8.4.

我正在与各个论坛同时进行,以总结一些重复的问询(数 000人),并将结果转化为一个数据结构。 很奇怪的是,如果我使用%多,但当我转向%多时,它就不起作用,但只有一分(如下文所示)。

我很想知道,这是否与单一连接物体有关,因此,我制造了10个连接物体,视单模块10而定,视此点究竟是哪一个特定物体而定。 (下文仅用2个链接物体标明)。 评价的表述(第01条)包含/取决于什么的疑问。

我无法理解这些具体的错误信息。 我想知道,做这项工作是否有任何办法。

Thanks.
Vishal Belsare

R snippet:

> id.qed2.foreach <- foreach(i = 1588:1588, .inorder=FALSE) %dopar% { 
+ if (i %% 2 == 0) {con <- con0}; 
+ if (i %% 2 == 1) {con <- con1}; 
+ 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 <- foreach(i = 1588:1589, .inorder=FALSE) %dopar% { 
+ if (i %% 2 == 0) {con <- con0}; 
+ if (i %% 2 == 1) {con <- con1}; 
+ 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 "
> 

EDIT:我改动了几件事(未成功),但一些事情已经曝光。 管道中的连接物体,但不通过断层连接而脱节,导致邮政联系的hang升/log。 在我这样做的时候,一些新的错误信息显示:

> system.time(
+ id.qed2.foreach <- foreach(i = 1588:1590, .inorder=FALSE, 
.packages=c("DBI", "RPostgreSQL")) %dopar% {drv0 <- dbDriver("PostgreSQL"); 
con0 <- dbConnect(drv0, dbname= nseindia );
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 "
最佳回答

以下著作和按顺序排列的速率约为1.5x。 作为下一步,我很想知道,是否有可能附上一份由登记总局负责的每一位工人的联系标书。 如果是的话,就没有必要创建/展示连接物体,从而无法压倒PogreSQL服务器的连接。

pgparquery <- function(i) {
drv <- dbDriver("PostgreSQL"); 
con <- dbConnect(drv, dbname= nsdq ); 
lst <- eval(expr.01); #contains the SQL query which depends on  i 
qry <- dbSendQuery(con,lst);
tmp <- fetch(qry,n=-1);
dt <- dates.qed2[i]
dbDisconnect(con);
result <- list(date=dt, idreuters=tmp$idreuters)
return(result)}

id.qed.foreach <- foreach(i = 1588:3638, .inorder=FALSE, .packages=c("DBI", "RPostgreSQL")) %dopar% {pgparquery(i)}

--
Vishal Belsare

问题回答

更高效地建立数据库连接,每名工人一次,而不是一次。 不幸的是, m子在执行任务之前就为工人的初始工作提供了一种机制,因此,利用世界协调会的支持者来这样做并非易事,但如果你利用世界协调会的支持者,则你可以先采用分组办法。 下面是如何调整守则的一个例子:

library(doParallel)
cl <- makePSOCKcluster(detectCores())
registerDoParallel(cl)

clusterEvalQ(cl, {
  library(DBI)
  library(RPostgreSQL)
  drv <- dbDriver("PostgreSQL")
  con <- dbConnect(drv, dbname="nsdq")
  NULL
})

id.qed.foreach <- foreach(i=1588:3638, .inorder=FALSE,
                          .noexport="con",
                          .packages=c("DBI", "RPostgreSQL")) %dopar% {
  lst <- eval(expr.01)  #contains the SQL query which depends on  i 
  qry <- dbSendQuery(con, lst)
  tmp <- fetch(qry, n=-1)
  dt <- dates.qed2[i]
  list(date=dt, idreuters=tmp$idreuters)
}

clusterEvalQ(cl, {
  dbDisconnect(con)
})

自Parallel和集群以来 EvalQ正在使用同一组标的cl,每个航程在执行任务时都可以查阅数据库链接标的con





相关问题
摘录数据

我如何将Excel板的数据输入我的Django应用? I m将PosgreSQL数据库作为数据库。

Postgres dump of only parts of tables for a dev snapshot

On production our database is a few hundred gigabytes in size. For development and testing, we need to create snapshots of this database that are functionally equivalent, but which are only 10 or 20 ...

How to join attributes in sql select statement?

I want to join few attributes in select statement as one for example select id, (name + + surname + + age) as info from users this doesn t work, how to do it? I m using postgreSQL.

What text encoding to use?

I need to setup my PostgreSQL DB s text encoding to handle non-American English characters that you d find showing up in languages such as German, Spanish, and French. What character encoding should ...

SQL LIKE condition to check for integer?

I am using a set of SQL LIKE conditions to go through the alphabet and list all items beginning with the appropriate letter, e.g. to get all books where the title starts with the letter "A": SELECT * ...