2017-08-16 12 views
0

データフロージョブを使用してバケットに配置されたシェルスクリプトを実行しようとしています。google cloud dataflowジョブを使用してシェルスクリプトを実行

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

注:私はWindowsマシンを使用していますので、私は、スクリプトを実行するためにデータフローランナーを使用します。私は直接ランナーを使用して、このジョブを使用してgsutilのコマンドを実行することができます。

+0

これをParDo内から実行しようとしていますか?これは失敗ですか?もしそうなら、あなたはどんなエラーを見ていますか?あなたのパイプラインはどのように見えますか? – Pablo

+0

もし私が文字列を書くコマンド= "bash shellDataflow.sh";プロセスp = Runtime.getRuntime()。exec(コマンド); "execption occured"というエラーメッセージが表示されるプログラム "bash"を実行できません:CreateProcess error = 2、システムは指定されたファイルを見つけることができません "。上記のプログラムは私のWindowsシステムのコマンドラインインスタンスを呼び出すので、エラーはこのようなものです。私のデータフロージョブを使用してその環境で自分のシェルを実行できるように、クラウドコンソール環境にJavaコードを介して接続する方法はありますか? – Aditi

答えて

1

これを試してみてください。それは私の場合に実行されます。コードを.jarまたはmavenプロジェクトとしてクラウドにデプロイする必要があります。 /home/*/test.shのパスはクラウドコンソールにあります。

String[] cmd = {"sh", "/home/akash/test.sh", "/home/akash/"}; 
     Runtime.getRuntime().exec(cmd); 
関連する問題