有没有办法在 r 的集群中设置语言环境?
Is there a way to set locales in cluster in r?
我不得不运行一段代码使用并行处理来减少执行时间。每个步骤都是相互独立的。我创建了一个集群,
cl = makeCluster(cores)
registerDoParallel(cl)
invisible(clusterEvalQ(cl, sapply(list.files("./Src/LibrariesAndFunctions/",
full.names = TRUE,
recursive = TRUE),
function(x) {
source(x, encoding = "UTF-8")
})))
现在我需要阅读同一目录中的一组可用函数。问题是数据是日文的,我在集群外全局设置了区域设置为
Sys.setlocale("LC_ALL","japanese_JAPAN")
这在集群外有效,但在集群内无效,它会抛出这样的错误,
2020/02/12 20:10:27.742 [INFO ] 2020/02/12 20:10:27.497 |main | [xxx] 結合 開始
Error in checkForRemoteErrors(lapply(cl, recvResult)) :
4 nodes produced errors;irst error: ./Src/LibrariesAndFunctions//01_Setup_Logging_Milestone/I103_Setup.R:15:0: unexpected end of input
13: ##
14: ##
^
此错误表明第 14 行的输入意外结束,但那里有日文注释。只有将评论翻译成英文才能解决这个问题。所以我的问题是,如何在集群节点中设置语言环境?
您可以 运行 每个集群节点上的任意 R 代码 clusterEvalQ
。
parallel::clusterEvalQ(cl, Sys.setlocale("LC_ALL","japanese_JAPAN"))
我找到了解决这个问题的方法。解决方案是这样的。
clusterCall(cl,function(){ Sys.setlocale("LC_ALL","japanese_JAPAN")})
已在集群中设置语言环境。
我不得不运行一段代码使用并行处理来减少执行时间。每个步骤都是相互独立的。我创建了一个集群,
cl = makeCluster(cores)
registerDoParallel(cl)
invisible(clusterEvalQ(cl, sapply(list.files("./Src/LibrariesAndFunctions/",
full.names = TRUE,
recursive = TRUE),
function(x) {
source(x, encoding = "UTF-8")
})))
现在我需要阅读同一目录中的一组可用函数。问题是数据是日文的,我在集群外全局设置了区域设置为
Sys.setlocale("LC_ALL","japanese_JAPAN")
这在集群外有效,但在集群内无效,它会抛出这样的错误,
2020/02/12 20:10:27.742 [INFO ] 2020/02/12 20:10:27.497 |main | [xxx] 結合 開始
Error in checkForRemoteErrors(lapply(cl, recvResult)) :
4 nodes produced errors;irst error: ./Src/LibrariesAndFunctions//01_Setup_Logging_Milestone/I103_Setup.R:15:0: unexpected end of input
13: ##
14: ##
^
此错误表明第 14 行的输入意外结束,但那里有日文注释。只有将评论翻译成英文才能解决这个问题。所以我的问题是,如何在集群节点中设置语言环境?
您可以 运行 每个集群节点上的任意 R 代码 clusterEvalQ
。
parallel::clusterEvalQ(cl, Sys.setlocale("LC_ALL","japanese_JAPAN"))
我找到了解决这个问题的方法。解决方案是这样的。
clusterCall(cl,function(){ Sys.setlocale("LC_ALL","japanese_JAPAN")})
已在集群中设置语言环境。