【发布时间】:2016-05-11 15:17:31
【问题描述】:
我正在尝试使用 multidplyr 运行 do 命令,该命令运行自定义函数,该函数使用 RJDBC 查询 Vertica 数据库。我运行multidplyr 示例或直接查询数据库没有问题,但是当我尝试连接到multidplyr 中的数据库时出现错误:
checkForRemoteErrors(lapply(cl, recvResult)) 中的错误:3 个节点 产生错误;第一个错误:未检测到正在运行的 JVM。也许 .jiit() 会有帮助的。
我尝试了评论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))
【问题讨论】:
标签: r foreach parallel-processing dplyr