Ошибка в параллельном процессе с использованием doSNOW

Error in { : task 1 failed - "invalid connection"

Почему я получаю эту ошибку каждый раз, когда пытаюсь использовать все 4 ядра для параллельного процесса.

Вот пример кода:

NumberOfCluster <- 4
cl <- makeCluster(NumberOfCluster)
registerDoSNOW(cl)

fl<- file(file.choose(),"r") # file.choose() is going to locate a file(.tsv)                 
                             # of size 8 gb (RAM is 4 GB)

foreach(i=1:3) %dopar% {

  View(name_fil <- read.delim(fl,nrows = 1000000,header = TRUE))

}

person Utsav Bhargava    schedule 20.07.2015    source источник
comment
View — это функция rstudio для просмотра данных в пользовательском интерфейсе. Кажется немного странным хотеть вызывать это в коде, выполняемом в отдельных процессах в кластере. Кроме того, ваш взгляд, кажется, просто читает один и тот же файл 3 раза параллельно, что снова является странным использованием параллелизма.   -  person Nick Kennedy    schedule 20.07.2015


Ответы (1)


Вы получаете сообщение об ошибке, потому что файловые объекты не могут быть экспортированы в рабочие процессы. Вместо этого вы можете экспортировать имя файла и открыть этот файл на каждом из рабочих процессов:

fname <- file.choose()
foreach(i=1:3) %dopar% {
  fl <- file(fname, "r")
  View(name_fil <- read.delim(fl,nrows = 1000000,header = TRUE))
}

Далее вы можете столкнуться с проблемами при использовании функции View, но это должно устранить ошибку «неверное соединение».

person Steve Weston    schedule 20.07.2015