このトピックに関する他の記事をいくつか見てきましたが、 。しかし、ここで行く:
私はこれは、多くの場合、正常に動作しますが、今のエラーを投げている
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
このエラーi間欠的です。メモリは豊富(32GB)で、その他の大きなRオブジェクトはメモリにありません。並列コード内の関数は、クラウドから多数の小さなjsonデータオブジェクトを取得し、それらをRオブジェクトに格納します。したがって、大きなデータファイルはありません。私はなぜ時折それが埋め込まれたヌルを見て停止するのか分からない。
クラウドからcsvファイルを取得する機能にも同様の問題があります。両方の機能は今までR 3.3.0とR 3.4.0でうまく機能していました。
WindowsでR 3.4.1とRStudio 1.0.143を使用しています。
ここに私の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
UPDATE
今、私は別の同様のエラーを取得:
Error in unserialize(node$con) : ReadItem: unknown type 100, perhaps written by later version of R
埋め込まれたNULエラーが消えているようです。また、.Rhistoryと.Rdataを削除しようとしました。また、私のパッケージのサブフォルダを削除し、すべてのパッケージを再ロードしました。少なくともこの新しいエラーは一貫しているようです。私は「未知のタイプ100」が何であるかを見つけることができません。
環境内に大きなオブジェクトがあり、クラスタにエクスポートされていることがありますか?このforeach呼び出しをそれ自身の関数に入れてみてください。 –
それは問題ではないようです - 私は実際に環境内の無関係なオブジェクトをすべて削除しました。 – user2642948
私たちに与えることができる '関数'を使って問題を再現できますか? –