java - Hadoop 命令不从 java prcoessbuilder 执行

标签 java linux hadoop

我有这个脚本。

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/

相关文章:

java - JOGL - 移动相机

java - Spring @TestPropertySource 类路径与文件

r - 需要 CentOS 脚本中的 SED 命令帮助以在 RStudio 包管理器中自动更新策划的 CRAN

linux - 如何合并不同服务器上的目录?

hadoop - 配置单元插入覆盖目录,存储为 Parquet 创建的具有默认名称的列

amazon-web-services - Amazon EMR MapReduce 进度回滚?

java - 资源未使用资源集

linux - 多个 GZip 文件的快速连接

hadoop - Hadoop put和copyfromlocal之间的区别

java - 带有 alter table 的 Spring Jdbc 原子性