Uygulandığı Öğe
Revolution Analytics

Aşağıdaki örnekte olduğu gibi birden fazla ODBC bağlantıları parallelized çalışan iş parçacıkları arasında kullanılmaya çalışılıyor başarısız olabilir:

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"

ODBC bağlantıları kapalı olarak işçi almak sorun değildir.Sorun burada çalışanları (bildiriliyor çalışanları forking yoluyla oluşturulan) olduğu gibi üst işlemin paylaştığı sürece, üst maddenin bağlantıları çalışanları tarafından paylaşılamayan şekilde bağlantılarını işleme özgü değildir. ODBC hesaplamaları çatallanmış çalışanlar üzerinde dağıtmak için Dağıtılmış görev bir parçası olarak her alt bağlantıları kurmak.Örnek:

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

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.