Dotyczy
Revolution Analytics

Podjęto próbę użycia wielu połączeń ODBC całej wątków roboczych jednordzeniowym mogą nie działać tak jak w następującym przykładzie:

loaddata <- function(cn){result <- sqlQuery(cn,'select * from boston')return(head(result))}library(RODBC)cn1 <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')cn2 <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')cn3 <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')cn4 <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')rxSetComputeContext('localpar')system.time ({z <- rxExec(loaddata, rxElemArg(list(cn1,cn2,cn3,cn4)), packagesToLoad='RODBC')})Error in do.call(.rxDoParFUN, as.list(args)) :task 1 failed - "first argument is not an open RODBC channel"

Problem polega na pewno procesy robocze odbierania połączeń ODBC jako zamknięte.Zagadnienie jest, że połączenia są specyficzne dla procesu, więc chyba, że pracownicy są udostępnianie procesu nadrzędnego (jak pracownicy wielordzeniowych utworzony za pośrednictwem Rozwidlenie), połączenia obiektu nadrzędnego nie może być współużytkowana przez pracowników. Aby rozpowszechnić ODBC obliczeń dotyczących pracowników-odłam, należy ustanowić połączenia na każdego pracownika jako część zadań rozproszonych.Przykład:

loaddata <- function(){library(RODBC)cn <- odbcConnect("RevoTestDB", uid='RevoTester', pwd='RevoTester')result <- sqlQuery(cn,'select * from boston')return(head(result))}z <- system.time({z <- rxExec(loaddata,packagesToLoad='RODBC')})

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.