2010-08-22 23 views
0

我有一個提交給禿鷹的R作品,提交給禿鷹的R文件(one.R)正在讀取另一個R文件(two.R) ,當我向禿鷹提交作業失敗時,原因是提交的R(one.R)文件未讀取被調用的R文件(two.R) 文本文件中的錯誤是:在提交作業到禿鷹時讀取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 

欣賞的任何想法。

謝謝,

+0

縮進代碼;降價是在解釋散列,它是不可讀的 – mbq 2010-08-22 08:18:42

+0

什麼是神鷹?除了鳥或飛機,我的意思是 – 2010-08-24 17:42:25

+0

@Willams Condor是一個工作負載管理系統的計算密集型工作,你可以參考http://www.cs.wisc.edu/condor/瞭解更多關於condor .. – Shruti 2010-08-25 02:29:31

回答

1

當你說

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

這告訴禿鷹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中查找two.R」?它可能會說,「看看桌面/測試用例/ 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,消除模糊性

2

這不是一個R相關的問題,而是一個可訪問性的問題。該錯誤消息對我來說似乎相當清楚:服務器對該文件沒有讀取權限。確保您共享您想要閱讀的文件或文件夾。我不知道您所在的網絡和羣集的設置是什麼,但最好聯繫管理員以詢問如何讓您的文件到達右側地方。

還要確保如果您將文件傳輸到服務器/羣集,則會調整您的R腳本,使其指向正確的目錄。這可能不是你自己的硬盤...