Я пытаюсь использовать команду multidplyr для запуска команды do
, которая запускает настраиваемую функцию, которая запрашивает базу данных Vertica, используя RJDBC. У меня нет проблем запуска multidplyr
примеров или запросов к базе данных напрямую, но когда я пытаюсь подключиться к базе данных в multidplyr
я получаю ошибку:multidplyr с подключением к базе данных
Error in checkForRemoteErrors(lapply(cl, recvResult)) : 3 nodes produced errors; first error: No running JVM detected. Maybe .jinit() would help.
Я пробовал предложение в комментариях here сделать кластер вручную, передавая объект подключения к базе данных vertica
, но я все еще получаю сообщение об ошибке «Не обнаружено JVM без запуска». Я предполагаю, что это потому, что мне нужно сказать каждому узлу, чтобы запустить JVM, но я не сейчас, как это сделать.
Мой кода, извинение, что это не воспроизводимо, как я не могу разделить базу данных:
# 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))