我有这个脚本。
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"当我从putty执行它时,它工作正常,但当我们使用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);
}发布于 2017-01-22 12:43:18
问题是另一个脚本。脚本一(1)启动Java应用程序,该应用程序在内部调用第二个脚本(S2),该脚本正在下降。脚本一(S1)设置了无效的路径,而不是PATH,使用了PATH,这造成了整个问题。
https://stackoverflow.com/questions/41748099
复制相似问题