2017-01-19 12 views
0

私はこのスクリプトを持っています。Hadoopコマンドはjava prcoessbuilderから実行されません

log_file_name=dataProcessor 
export pwd=`pwd` 
echo "in data processing" 
log_file_path=LOGS/data-processor/ 
logfile=$log_file_path$log_file_name.log 
log_file_home_path=LOGS 
export LOG_FILE_HOME_PATH=$log_file_home_path 
export DATA_EXTRACTION_CONFIG_FILE_LOCATION=$pwd/config.properties 
export LIBJARS=/home/data-extraction/2.12.2.1/data-extraction/lib/*.jar 
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/home/abc/lib/*.jar 
echo `$HADOOP_CLASSPATH` 
hadoop jar data-processor-*.jar com.impl.JobSubmission -libjars ${LIBJARS} &> $log_file_home_path/process.log 
echo "in data processing done" 

パテから実行すると正常に動作しますが、java ProcessBuilderを使用して実行すると失敗します。 「Hadoopコマンドが見つかりません」というエラーで失敗します。 以下は、スクリプトを実行するために使用しているJavaコードです。

ProcessBuilder builder = new ProcessBuilder(command.trim()); 
//builder.redirectErrorStream(true); 
Process process = builder.start(); 
exitStatus = process.waitFor(); 
BufferedReader reader = 
      new BufferedReader(new InputStreamReader(process.getInputStream())); 

String line = ""; 
while ((line = reader.readLine()) != null) { 
    output.append(line + "\n"); 
    System.out.print(line); 
} 
+0

Javaの 'ProcessBuilder'でどのように実行しているのですか? –

+0

コードの例で余分な空白を削除しました – jwvh

答えて

0

問題は他のスクリプトです。 スクリプト1(1)はJavaアプリケーションを起動し、内部的には落ちていた第2スクリプト(s2)を呼び出します。スクリプト1(S1)は、PATHの代わりに無効なPATHを設定していましたが、パスが使用されていました。

関連する問題