将r作业提交给condor时读取R文件时出错

问题描述 投票:0回答:2

我有一个提交给秃鹰的R作业,提交给秃鹰的R文件(一个R)正在读取另一个R文件(两个R),当我将该作业提交给秃鹰时,它失败了原因是提交的R(one.R)文件未读取被调用的R文件(two.R)文本文件中的错误是:

Error in file(file, "rt") : cannot open the connection
Calls: read.table -> file
In addition: Warning message:
In file(file, "rt") :
  cannot open file 'C:/Users/pcname/Desktop/test_case/two.R': Permission denied
Execution halted 

我的提交文件是

#test_input.condor
#

executable = C:\R\R-2.10.1\bin\Rscript.exe
arguments = one.R
universe = vanilla
getenv = true
#requirements = ARCH == "INTEL" && OPSYS == "WINNT60" 
input = one.R

should_transfer_files = yes
transfer_executable = false
when_to_transfer_output = ON_EXIT
transfer_input_files = C:/Users/OmegaAdmin/Desktop/test_case/two.R

log = test_input.log
output = test_input.out
error = test_input.err

queue 

赞赏任何想法。

谢谢,

r distributed-computing
2个回答
1
投票

当你说

transfer_input_files = C:/Users/OmegaAdmin/Desktop/test_case/two.R

这告诉Condor在作业开始时将two.R复制到当前工作目录中。当前工作目录是一个专门创建的工作空间,而不是(通常)主目录。因此,我希望完整的路径看起来像

C:/condor/execute/dir_28412/two.R

但是,R实际上正在查看

C:/Users/pcname/Desktop/test_case/two.R

为什么R向那里看? one.R是否可能会说“在$ HOME / Desktop / test_case中找到2.R”?它是否可能会说“在Desktop / testcase / two.R中查找”,并且R具有想要相对于用户主目录进行查看的配置?

几乎可以肯定的解决方案是修改一个.R或您的R配置,以在当前工作目录中查找两个.R。如果由于某种原因R更改了它的当前工作目录,则环境变量_CONDOR_SCRATCH_DIR应该包含它。


在相关说明中,您说:

arguments = one.R
input = one.R

[第一个是传递给Rscript.exe的参数,我猜是告诉R加载并运行一个名为one.R的文件。除了没有脚本!如果您希望它能正常工作,则需要将其添加到transfer_input_files中。但这显然有效。为什么?因为"input=one.R"的意思是“将one.R的内容作为标准输入输入到Rscript.exe;就像您在其中键入这些内容一样。”我猜想您可以删除参数,也可以删除输入,然后在transfer_input_files中添加one.R,从而消除歧义。


2
投票

这不是与R相关的问题,而是可访问性问题。错误消息对我来说似乎很清楚:服务器没有该文件的读取权限。确保共享要读取的文件或文件夹。我不知道网络和群集的设置如何,无论您身在何处,但最好与管理员联系,以询问如何正确获取文件的地方。

还请确保如果将文件传输到服务器/群集,则应调整R脚本,使其指向正确的目录。可能不是您自己的硬盘...

© www.soinside.com 2019 - 2024. All rights reserved.