我正在尝试使用“hdfs dfs -mkdir / user / 19491 / testfolder”通过以下代码创建目录:
Session session = createSSHSession();
ChannelExec channelExec = null;
channelExec = (ChannelExec)session.openChannel("exec");
channelExec.setCommand("hdfs dfs -mkdir -p hdfs://user/19491/testfolder");
channelExec.connect();
BufferedReader br=new BufferedReader(new InputStreamReader(channelExec.getInputStream()));
String text;
while((text=br.readLine())!=null) {
System.out.println("Text is:"+text);
}
int exitStatus = channelExec.getExitStatus();
System.out.println("Exit status:"+exitStatus);
运行此代码后,将创建文件夹,但返回的退出状态为-1。根据此link表明存在错误。为什么会这样呢?该文件夹已创建,因此它不应该返回0吗?
最佳答案
(假设您正在使用jsch)命令未完成时,getExitStatus
返回-1。
http://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/Channel.html#getExitStatus()
我认为该函数在hdfs
命令完成之前被调用。该example等待直到通道关闭。