2015-04-23 141 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

作为一个字符串不工作组成整个命令。 –