Bandant naudoti kelis ODBC ryšius parallelized darbuotojo gijomis gali nepavykti, kaip parodyta pavyzdyje:

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"

Problema yra vartotojo procesų gauti ODBC ryšiai neveikia.

Problema čia yra ta ryšių procesas būdingas, išskyrus atvejus, kai darbuotojai naudojasi pirminis procesas (kaip kelių branduolių darbuotojų sukurtas naudojant šakojimasis), tėvų ryšiai negali būti bendrinami, darbuotojai. Paskirstyti skaičiavimai ODBC-išsišakojęs darbuotojams, sukurti ryšius kiekvienam darbuotojui kaip paskirstytasis užduotis.

Pavyzdys:

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')})


Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Ar esate patenkinti vertimo kokybe?

Kas turėjo įtakos jūsų patirčiai?

Turite daugiau atsiliepimų? (Pasirinktinai)

Dėkojame už jūsų atsiliepimus!

×