Tôi đã xem một số bài đăng khác về chủ đề này và không có bài viết nào giống với vấn đề tôi gặp phải . Nhưng ở đây đi:
Tôi đang chạy một chức năng song song sử dụng
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])}
này thường hoạt động tốt, nhưng bây giờ là ném lỗi:
Error in serialize(data, node$con) : error writing to connection
Sau khi kiểm tra đầu ra .txt tệp Tôi thấy:
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
Lỗi này tôi s liên tục. Bộ nhớ phong phú (32GB), và không có đối tượng R lớn nào khác có trong bộ nhớ. Hàm trong mã song song truy xuất một số đối tượng dữ liệu json nhỏ từ đám mây và đặt chúng vào đối tượng R - vì vậy không có tệp dữ liệu lớn. Tôi không biết tại sao nó thỉnh thoảng lại nhìn thấy một nul nhúng và dừng lại.
Tôi cũng gặp sự cố tương tự với chức năng cũng kéo tệp csv từ đám mây. Cả hai hàm đều hoạt động tốt theo R 3.3.0 và R 3.4.0 cho đến bây giờ.
Tôi đang sử dụng R 3.4.1 và RStudio 1.0.143 trên Windows.
Dưới đây là sessionInfo tôi
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
CẬP NHẬT
Bây giờ tôi nhận được một lỗi tương tự:
Error in unserialize(node$con) : ReadItem: unknown type 100, perhaps written by later version of R
nhúng lỗi nul dường như đã biến mất. Tôi cũng đã thử xóa .Rhistory và .Rdata và cũng xóa các thư mục con của tôi và tải lại tất cả các pacakges của tôi. Ít nhất lỗi mới này có vẻ nhất quán. Tôi không thể tìm thấy "loại không xác định 100" là gì.
Có thể bạn có các đối tượng lớn trong môi trường được xuất trên các cụm? Hãy thử gọi cuộc gọi foreach này bằng chức năng riêng của nó. –
Điều đó dường như không phải là vấn đề - tôi thực sự đã xóa tất cả các đối tượng không liên quan trong môi trường. – user2642948
Bạn có thể tái tạo vấn đề bằng 'hàm' mà bạn có thể cung cấp cho chúng tôi không? –