Ισχύει για
Revolution Analytics

Ενδέχεται να μην προσπαθήσετε να χρησιμοποιήσετε πολλαπλές συνδέσεις ODBC κατά μήκος των νημάτων εργασίας parallelized όπως στο ακόλουθο παράδειγμα:

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 που έκλεισε.Το ζήτημα εδώ είναι ότι οι συνδέσεις είναι συγκεκριμένη διαδικασία, έτσι εκτός αν οι εργαζόμενοι κοινή χρήση τη γονική διεργασία (όπως μέσω διχασμών πολλαπλών πυρήνων εργαζομένων), συνδέσεων της γονικής τοποθεσίας δεν είναι δυνατό να επιμερίζονται στους εργαζομένους. Για να διανείμετε ODBC υπολογισμούς σε μη forked εργαζομένων, δημιουργούν τις συνδέσεις σε κάθε εργαζομένου ως μέρος της εργασίας κατανεμημένες.Παράδειγμα:

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

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.