我有这个脚本。
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);
}
最佳答案
问题出在另一个脚本上。 脚本 one(1) 启动 Java 应用程序,它在内部调用正在下降的第二个脚本(s2)。脚本一 (S1) 设置了无效的 PATH,而不是 PATH,使用了路径,这造成了整个问题。
关于java - Hadoop 命令不从 java prcoessbuilder 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41748099/