2015-04-23 148 views
0

用Python寫的我使用YCSB(雅虎雲服務基準)Linux文件 2節點卡桑德拉(2.0.2)集羣部署在的CentOS的性能測量。對於使用YCSB加載數據I執行以下的 -
執行使用Java程序

bin/ycsb load cassandra -P workloads/cassandraLoadA -s files/load.dat 

此行使用屬性文件cassandraLoadA和並存儲在YCSB load.dat生成。這裏ycsb文件是用Python編寫的。現在我想從Java程序執行上述操作。我試着用ProcessBuilder運行時對象但失敗。
使用的ProcessBuilder對象 -

ProcessBuilder builder = new ProcessBuilder("/DIRECTORY_HERE/bin/ycsb","load","cassandra","-P", "workloads/cassandraLoadA","-s","files/load.dat"); 
Map<String, String> environ = builder.environment(); 
final Process process = builder.start(); 

使用運行時對象 -

Process p = Runtime.getRuntime().exec("cd /DIRECTORY_HERE/bin/ycsb load cassandra -P workloads/cassandraLoadA -s files/load.dat"); 
p.waitFor(); 

Q1:我是不是做錯了什麼嗎?問題二:如何實現?

最佳關於下述
Avijoy

+0

問題可能會被降低,但會提到可行的方法,所以至少有一種方法可以在投票前給出正確的方法。 –

回答

0

嘗試作曲整個命令作爲一個字符串,然後把它傳遞給的ProcessBuilder

+0

評論將有助於無視downvote :( –

+0

組成整個命令作爲一個字符串不工作.... –

+0

添加redirectErrorStream(true)並更新您的任務與錯誤信息 –

-1

附CD和執行命令之間 '& &', 試試這個:

Process p = Runtime.getRuntime().exec("cd /DIRECTORY_HERE/bin && ycsb load cassandra -P workloads/cassandraLoadA -s files/load.dat"); 

p.waitFor();

希望對你有幫助!

+0

作爲一個字符串不工作組成整個命令。 –