我正在尝试使用“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等待直到通道关闭。

10-05 23:30