我使用 YCSB(Yahoo!Cloud Serving Benchmark) 进行2节点 Cassandra(2.0.2)的性能测量部署在 CentOS 上的群集。为了使用YCSB加载数据,我执行了以下操作 -
bin/ycsb load cassandra -P workloads/cassandraLoadA -s files/load.dat
此行使用属性文件 cassandraLoadA ,并存储在 load.dat 中生成的YCSB。这里的 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();
第一季:我在这里做错了吗?
Q2:如何实现?最诚挚的问候 -
Avijoy
答案 0 :(得分:0)
尝试将整个命令组合为String,然后将其传递给ProcessBuilder
答案 1 :(得分:-1)
添加'&amp;&amp;'在cd和执行命令之间, 试试这个:
Process p = Runtime.getRuntime().exec("cd /DIRECTORY_HERE/bin && ycsb load cassandra -P workloads/cassandraLoadA -s files/load.dat");
p.waitFor();
希望帮助你!