2017-08-16 3 views
0

Ich versuche Shell-Skript in einem Bucket mit Datenfluss-Job platziert auszuführen.Ausführen von Shell-Skript mit Google Cloud-Datenfluss-Job

String[] cmdline = { "cmd.exe", "/c", "gsutil ls gs://Bucketname" }; 
Process p = Runtime.getRuntime().exec(cmdline); 
BufferedReader reader = new BufferedReader(new 
InputStreamReader(p.getInputStream())); 
      String line = null; 
      while ((line = reader.readLine()) != null) 
      { 
       System.out.println(line); 
      } 

Hinweis:: Ich kann gsutil Befehle mit diesem Job mit Direct Runner ausführen ich Datenfluß Läufer verwendet das Skript auszuführen, weil ich Windows-Rechner verwenden.

+0

Versuchen Sie, dies innerhalb eines ParDo auszuführen? Scheitert das? Wenn ja, welchen Fehler sehen Sie? Wie sieht Ihre Pipeline aus? – Pablo

+0

Wenn ich schreibe String command = "bash shellDataflow.sh"; Prozess p = Runtime.getRuntime(). Exec (Befehl) ;. Ich erhalte eine Fehlermeldung als "Ausnahme aufgetreten ist Kann Programm nicht ausführen" bash ": CreateProcess error = 2, Das System kann die angegebene Datei nicht finden". Der Fehler ist so, weil das obige Programm die Befehlszeileninstanz meines Windows-Systems aufruft. Gibt es eine Möglichkeit, eine Verbindung zur Cloud-Konsolenumgebung über Java-Code herzustellen, so dass ich meine Shell in dieser Umgebung mit meinem Datenfluss-Job ausführen kann. – Aditi

Antwort

1

Versuchen Sie, dies zu verwenden. Es läuft in meinem Fall. Sie müssen den Code in der Cloud als .jar oder als Maven-Projekt bereitstellen. Der Pfad /home/*/test.sh befindet sich in der Cloud-Konsole.

String[] cmd = {"sh", "/home/akash/test.sh", "/home/akash/"}; 
     Runtime.getRuntime().exec(cmd); 
Verwandte Themen