0

我正在使用YCSB(Yahoo! Cloud Serving Benchmark)来测量部署在CentOS上的 2 节点Cassandra(2.0.2)集群的性能。为了使用 YCSB 加载数据,我执行了以下操作——

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

此行使用属性文件cassandraLoadA并存储在 load.dat 中生成的YCSB。这里的 ycsb文件是用 Python 编写的。现在我想从 Java 程序中执行上述操作。我尝试使用ProcessBuilderRuntime对象但失败了。
使用 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:我在这里做错了吗?
Q2:如何实现?

最好的问候
-Avijoy

4

2 回答 2

0

尝试将整个命令组合为字符串,然后将其传递给 ProcessBuilder

于 2015-04-23T10:18:30.160 回答
-1

在 cd 和执行命令之间添加“&&”,试试这个:

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

p.waitFor();

希望对你有所帮助!

于 2015-04-23T10:23:14.833 回答