使用Java程序执行用Python编写的Linux文件

时间:2015-04-23 10:11:30

标签: java python ycsb

我使用 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

2 个答案:

答案 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();

希望帮助你!