0

map reduce プログラムからシステム コマンドを呼び出したいと思います。このコマンドを 1 回だけ実行したいのですが、コマンドが認識されないようです。私のテストコマンドは次のとおりです。 hadoop dfs -mv /user/test/somefile1 /user/test/somefile2

次を使用してコマンドを発行しています。

String envp[] = new String[1];
envp[0] = "Path=" + System.getProperty("java.library.path");
Process p = Runtime.getRuntime().exec("hadoop fs -mv /user/test/somefile1 /user/test/somefile2", envp);

質問が 2 つあります。

  1. このコードを 1 回だけ実行するのに最適な場所はどこですか?

  2. このコマンドを発行している環境で実際にコマンドが実行されないのはなぜですか?

他のコマンドでもこれに気づきました。

hadoop コマンドを発行してもエラーは発生しませんが、移動は行われません。Linuxコマンドラインから同じコマンドを実行すると、うまくいきます。

4

1 に答える 1

0

いくつかのコメント:

  1. hadoop dfs -mv引数にschemataを指定しない限り、ソースとターゲットのファイルシステムはhdfsであると想定します(例:)file:///user/test/somefile1
  2. このコマンドをHadoopツール内またはJob.configureで実行している場合、Javaでネイティブに呼び出すことができるのに、なぜ別のプロセス(終了コードは無視されているように見えるため、エラーは発生しません)を生成するのsrcPath.getFileSystem( cfg ).rename( srcPath, dstPath )ですか?
于 2012-07-19T18:49:21.523 に答える