Ich versuche multidplyr zu verwenden, um einen do
Befehl auszuführen, der eine benutzerdefinierte Funktion ausführt, die eine Vertica-Datenbank mit RJDBC abfragt. Ich habe kein Problem, die multidplyr
Beispiele ausgeführt wird oder direkt auf die Datenbank abfragen, aber wenn ich versuche, in multidplyr
zu der Datenbank zu verbinden bekomme ich den Fehler:Multidplyr mit Datenbankverbindung
Error in checkForRemoteErrors(lapply(cl, recvResult)) : 3 nodes produced errors; first error: No running JVM detected. Maybe .jinit() would help.
Ich habe den Vorschlag im Kommentar versuche here zu dem mache Cluster manuell, übergibt das vertica
Datenbankverbindungsobjekt, aber ich bekomme immer noch einen Fehler, dass "keine JVM erkannt wurde". Ich vermute, dass dies daran liegt, dass ich jedem Knoten sagen muss, dass er eine JVM starten soll, aber ich weiß jetzt nicht, wie ich das machen soll.
Mein Code, entschuldigt, dass es nicht reproduzierbar ist, da ich nicht die Datenbank teilen kann:
# set up DB connection
vertica <- dbConnect(vDriver, ...connection info...)
# create cluster
cluster3 <- create_cluster(3)
parallel::clusterExport(cl = cluster3, c("getData", "vertica"))
# run function in parallel using multidplyr
accounts_part <- multidplyr::partition(accounts, accountId, cluster = cluster3)
accounts_data <- accounts_part %>%
group_by(accountId) %>%
do(getData(ac = .$accountId, vertica = vertica))