0
我正在寫一個函數來擦除一個巨大的XML文件。由於節點大約一百萬,我想使用foreach包。下面R當使用foreach doParallel和XML時崩潰
xmlfile=xmlParse(file="./DATI/xmldata.xml") #read the file
#explore
if(exists("dbfromxml")) rm(dbfromxml)
root<-xmlRoot(xmlfile)
persons<-xmlChildren(root)
rm(root)
nrecords<-xmlSize(persons)
#set out the parallel framework
library(foreach)
library(doParallel)
cores <- getOption("mc.cores", detectCores())
cl<-makeCluster(cores,outfile="ciao.txt")
registerDoParallel(cl)
dbfromxml<-foreach(i=1:10,.combine=rbind,.packages = "XML") %dopar% {
personsxml<-persons[[i]]
processaXMLPersona(personsxml) #this function works properly ouside a do parallel environment
}
stopCluster(cl)
代碼和relevat評論當我設置了doParallel/makeCluster基礎設施負荷.packages =「XML」,使R型聚類崩潰出現的問題。出現以下錯誤:反序列化錯誤(socklist [[n]]):從連接讀取錯誤;序列化錯誤(數據,節點$ con):寫入連接時出錯
'processaXMLPersona'從哪裏來?該錯誤表明您正試圖並行讀/寫連接。 – Roland 2014-11-06 15:54:25
您好羅蘭processaXMLPersona是一個由源加載的函數。它接受和xmlobject。 – 2014-11-06 17:15:27
由於並行運行該功能可能是您的問題,如果您不共享該功能,我不會看到我們如何幫助您。 – Roland 2014-11-06 18:22:33