0
Javaラッパープログラムから糸ジョブを実行しようとしています。ProcessBuilderを使用してJavaプログラムからヤーンジョブを実行するとファイルが存在しませんエラー
- ヘッダファイル:その場所で、私は、ファイルの名前が、場所とファイル拡張子を知らないと、ファイルは1つだけあります
- 入力ファイルのディレクトリ
これら以外にも、出力ディレクトリがあります。 ProcessBuilderをコードは次のようになります。実行時には
HEADER_PATH = INPUT_DIRECTORY+"/HEADER/*.tsv";
INPUT_FILES = INPUT_DIRECTORY+"/DATA/";
OUTPUT_DIRECTORY = OUTPUT_DIRECTORY+"/";
ProcessBuilder mapRProcessBuilder = new ProcessBuilder("yarn","jar",JAR_LOCATION,"-Dmapred.job.queue.name=name","-Dmapred.reduce.tasks=500",HEADER_PATH,INPUT_DIRECTORY,OUTPUT_DIRECTORY);
System.out.println(mapRProcessBuilder.command().toString());
Process mapRProcess = mapRProcessBuilder.start();
、私は次のエラーを取得:
Exception in thread "main" java.io.FileNotFoundException: Requested file /input/path/dir1/HEADER/*.tsv does not exist.
をしかし、私は同じコマンドを実行すると:
yarn jar jarfile.jar -Dmapred.job.queue.name=name -Dmapred.reduce.tasks=500 /input/path/dir1/HEADER/*.tsv /input/Dir /output/Dir/
それはすべて正常に動作します。
Javaからコマンドを実行しているときに何が問題になるのですか?
これは意味があります。実際には、ヘッダファイルのハードコーディングされたフルパスを提供することによっても、同じエラーを出していましたが、いくつかのリテラル値がjavaから渡されている可能性があります。あなたの提案は役に立ちます!ありがとう! – A8H1