2015-04-23 1 views
0

J'utilise YCSb (Yahoo! Nuage de référence au service) pour la mesure de performance de 2 noeuds Cassandra (2.0.2) de groupe déployé sur CentOS. Pour les données de chargement à l'aide YCSb J'ai exécuté les éléments suivants -
Exécuter fichier Linux en Python en utilisant le programme Java

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

Cette ligne utilise le fichier de propriété cassandraLoadA et et stocke le YCSb généré en load.dat. Ici, le fichier ycsb est écrit en Python. Maintenant, je veux exécuter ce qui précède à partir d'un programme Java. J'ai essayé avec ProcessBuilder et objet Runtime mais échoué.
En utilisant ProcessBuilder Object-

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

Utilisation de Runtime Object -

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

Q1: Ai-je fait quelque chose de mal ici?
Q2: Comment cela peut-il être accompli?

Meilleur Regards-
Avijoy

+0

La question peut être downvoted mais les moyens essayés sont mentionnés ainsi au moins un peut donner des manières correctes avant le vote de bas. –

Répondre

0

Essayez composer la commande tout comme une chaîne et passer ensuite à la ProcessBuilder

+0

Un commentaire sera utile à undersatnd the downvote :( –

+0

Composer la commande entière comme une chaîne ne fonctionne pas .... –

+0

Ajouter redirectErrorStream (true) et mettre à jour votre quête avec le message d'erreur –

-1

Ajouter '& &' entre cd et commande d'exécution, Essayez ceci:

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

p.waitFor();

L'espoir vous a aidé!

+0

Composer la commande entière comme une chaîne ne fonctionne pas. –