2017-07-28 16 views
5

पर त्रुटि लिखने के लिए मैंने इस विषय पर कुछ अन्य पोस्ट देखी हैं, और कोई भी समस्या मेरे जैसा नहीं है । लेकिन यहाँ जाता है:

मैं समानांतर में एक समारोह

cores <- detectCores() cl <- makeCluster(8L,outfile="output.txt") registerDoParallel(cl) x <- foreach(i = 1:length(y), .combine='list',.packages=c('httr','jsonlite'), .multicombine=TRUE,.verbose=F,.inorder=F) %dopar% {function(y[i])}

इस बार ठीक काम करता है, लेकिन अब त्रुटि फेंक रहा है का उपयोग कर चल रहा हूँ:

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

उत्पादन की परीक्षा पर .txt फ़ाइल मैं देखता हूं:

starting worker pid=11112 on localhost:11828 at 12:38:32.867 
starting worker pid=10468 on localhost:11828 at 12:38:33.389 
starting worker pid=4996 on localhost:11828 at 12:38:33.912 
starting worker pid=3300 on localhost:11828 at 12:38:34.422 
starting worker pid=10808 on localhost:11828 at 12:38:34.937 
starting worker pid=5840 on localhost:11828 at 12:38:35.435 
starting worker pid=8764 on localhost:11828 at 12:38:35.940 
starting worker pid=7384 on localhost:11828 at 12:38:36.448 
Error in unserialize(node$con) : embedded nul in string: '\0\0\0\006SYMBOL\0\004\0\t\0\0\0\003')'\0\004\0\t\0\0\0\004expr\0\004\0\t\0\0\0\004expr\0\004\0\t\0\0\0\003','\0\004\0\t\0\0\0\024SYMBOL_FUN' 
Calls: <Anonymous> ... doTryCatch -> recvData -> recvData.SOCKnode - 
unserialize 
Execution halted 

यह त्रुटि मैं एस intermittent। मेमोरी भरपूर है (32 जीबी), और कोई अन्य बड़ी आर वस्तुओं स्मृति में हैं। समांतर कोड में फ़ंक्शन क्लाउड से कई छोटी जेसन डेटा ऑब्जेक्ट्स को पुनर्प्राप्त करता है और उन्हें एक आर ऑब्जेक्ट में डाल देता है - इसलिए कोई बड़ी डेटा फ़ाइलें नहीं हैं। मुझे नहीं पता कि यह कभी-कभी एम्बेडेड नल और स्टॉप क्यों देखता है।

मुझे एक ऐसे फ़ंक्शन के साथ एक ही समस्या है जो क्लाउड से सीएसवी फ़ाइलों को खींचती है। दोनों कार्य अब तक 3.35 और आर 3.4.0 के तहत ठीक काम करते हैं।

मैं विंडोज पर आर 3.4.1 और RStudio 1.0.143 का उपयोग कर रहा हूं।

Error in unserialize(node$con) : ReadItem: unknown type 100, perhaps written by later version of R

एम्बेडेड नुल त्रुटि गायब हो गई है लगता है:

यहाँ मेरी sessionInfo

sessionInfo() 
R version 3.4.1 (2017-06-30) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

Matrix products: default 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United 
States.1252 LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       LC_TIME=English_United States.1252  

attached base packages: 
[1] parallel stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] RJSONIO_1.3-0  RcppBDT_0.2.3  zoo_1.8-0   data.table_1.10.4 
doParallel_1.0.10 iterators_1.0.8 
[7] RQuantLib_0.4.2 foreach_1.4.3  httr_1.2.1  

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.12  lattice_0.20-35 codetools_0.2-15 grid_3.4.1  
R6_2.2.2   jsonlite_1.5  tools_3.4.1  
[8] compiler_3.4.1 

अद्यतन

अब मैं एक और इसी तरह त्रुटि मिलती है। मैंने हटाने की भी कोशिश की है। इतिहास और रैडाटा और मेरे पैकेज सबफ़ोल्डर को हटाकर और सभी पैकाकेज को फिर से लोड करना। कम से कम यह नई त्रुटि सुसंगत लगती है। मुझे नहीं पता कि "अज्ञात प्रकार 100" क्या है।

+0

हो सकता है कि आपके पास क्लस्टर पर निर्यात किए जाने वाले आपके पर्यावरण में बड़ी वस्तुएं हों? इस फ़ोरैच कॉल को अपने स्वयं के फ़ंक्शन में डालने का प्रयास करें। –

+0

यह समस्या नहीं प्रतीत होता है - मैंने वास्तव में पर्यावरण में सभी अपरिपक्व वस्तुओं को हटा दिया। – user2642948

+0

क्या आप समस्या को 'फ़ंक्शन' के साथ पुन: पेश कर सकते हैं जिसे आप हमें दे सकते हैं? –

उत्तर

4

मुझे एक ही त्रुटि मिलती है ... आमतौर पर बाद की स्क्रिप्ट चलाने पर होती है जब मेरी पिछली स्क्रिप्ट में से एक को अनदेखा किया जाता है या मैंने इसे जल्दी बंद कर दिया। यह वह हिस्सा हो सकता है जहां आप उल्लेख करते हैं: "मुझे नहीं पता कि यह कभी-कभी एम्बेडेड नल और स्टॉप क्यों देखता है" जो त्रुटि हो सकती है।

इसमें कुछ अच्छी जानकारी है, विशेष रूप से नियमित विंडोज प्रक्रियाओं को चलाने के लिए 1 कोर छोड़ना सुनिश्चित करने के लिए। यह भी उल्लेख करता है "अगर आपको इनमें से किसी भी कार्य से कोई त्रुटि मिलती है, तो आमतौर पर इसका मतलब है कि कम से कम एक मजदूर की मृत्यु हो गई है" जो त्रुटि के बाद दुर्घटनाग्रस्त होने के बारे में मेरे सिद्धांत का समर्थन कर सकता है।

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

अब तक, मेरे समाधान यह फिर से चलाकर समानांतर बैकएंड फिर से प्रारंभ करने में किया गया है:

registerDoParallel(cl) 

यह आमतौर पर बाद में काम करता है, लेकिन मैं नोटिस करते हैं कि पिछले मल्टी कोर सत्र मेरे टास्क मैनेजर में भी नहीं जाना है:

stopCluster(cl) 

यही कारण है कि मैं कभी-कभी आर को पुनरारंभ करता हूं।

+0

हां, मुझे भी कोर की समस्या नहीं है 'स्टॉपक्लस्टर (सीएल) 'के बाद। मैं बैकएंड को फिर से शुरू करने की कोशिश करूंगा। मैंने नियमित विंडोज प्रक्रियाओं के लिए 1 से कोर की संख्या को कम करने की कोशिश की है, लेकिन यह मदद नहीं करता है। – user2642948

+0

मैंने अभी कोड को फिर से कोशिश की और यह भाग गया - लेकिन यह पिछले 15 प्रयासों में पहली बार है। आउटपुट फ़ाइल इस बार कुछ भी गलत नहीं बताती है। लेकिन शायद ही एक आत्मविश्वास निर्माता ..... – user2642948

+1

तीन और प्रयासों में विफलता हुई। आर को पुनरारंभ करना, कोर को कम करना, और समांतर बैकएंड को फिर से शुरू करना मदद नहीं करता है। – user2642948

2

मैंने यह भी देखा कि बहु-कोर सत्र टास्क मैनेजर से दूर नहीं जाते हैं।

का उपयोग करने से स्विचिंग: stopCluster(cl) stopImplicitCluster() मेरे लिए काम किया करने के लिए । मेरे पढ़ने से, यह जब एक "एक पंक्ति" registerDoParallel(cores=x) का उपयोग कर बनाम

cl<-makeCluster(x) 
registerDoParallel(cl) 

मेरे "आंत महसूस" इस्तेमाल किया जा माना जाता है कि कैसे विंडोज समूहों संभालती stopImplicitCluster आवश्यकता है, लेकिन अपने अनुभव भिन्न हो सकते हैं है।

मैंने टिप्पणी की होगी लेकिन यह (क्यू बैंड) मेरा पहला स्टैक ओवरफ़्लो पोस्ट है !!!

संबंधित मुद्दे