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

时间:2010-08-22 07:40:31

标签: r distributed-computing

我有一个提交给神鹰的R作业,提交给神鹰的R文件(one.R)正在读取另一个R文件(two.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 

对此有任何想法。

谢谢,

2 个答案:

答案 0 :(得分:2)

这不是与R相关的问题,而是可访问性问题。我似乎很清楚错误消息:服务器没有该文件的读取权限。确保您共享要读入的文件或文件夹。我不知道您所在的网络和群集的设置是什么,但您最好联系管理员询问如何将文件提供给您地方。

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

答案 1 :(得分: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中找到两个。”吗?它是否可能会说“Look in Desktop / testcase / two.R”并且R的配置想要相对于用户的主目录?

解决方案几乎可以肯定是修改one.R或R配置以在当前工作目录中查找two.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;就像你输入那些内容一样。我猜你可以删除参数,或者删除输入并将one.R添加到transfer_input_files,消除歧义。