首页 > 解决方案 > 使用r中的雪包将不同的数据发送到不同的节点

问题描述

我想要实现的是将我的数据集拆分为n块,其中 n 是可用处理器的数量,并将每个块发送到不同的节点。因此,节点 1 将获得块 1,节点 2 接收块 2,...,节点 n 获得块 n。

以前,我曾经将整个数据集发送到每个节点,并且只在每个节点上发送子集数据,但随着我的数据集变得越来越大,我无法承受这样做,因为 usingclusterExport会生成以下错误消息:

Error in serialize(data, node$con) : error writing to connection

我已经尝试了这么多不同版本的函数,clusterApply或者clusterCall它们都没有成功,因为显然将数据(分区为带有n元素的列表)作为调用函数的参数与clusterApply将数据发送到节点看起来R仍然发送副本以执行导致类似错误的功能。

此外,我尝试在主节点上拆分数据(即创建了 data_1、...、data_n),并尝试在单个节点上读取每个部分,而不使用以下方法发送整个数据:

data_dist <- function(data){
             node_data <<- eval(as.name(data))                           
             }

clusterApply(cluster, str_c("data", 1:ncores, sep = "_"), data_dist)

但是节点仍然无法访问数据。任何帮助将不胜感激。

标签: rparallel-processingsnow

解决方案


推荐阅读