【问题标题】:Hadoop Filesystem shell returning -1 following successful executionHadoop 文件系统 shell 在成功执行后返回 -1
【发布时间】:2015-07-29 10:32:51
【问题描述】:

我正在尝试使用带有以下代码的“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 吗?

【问题讨论】:

    标签: java hadoop ssh hdfs


    【解决方案1】:

    (假设您使用的是 jsch)getExitStatus 在命令未完成时返回 -1。

    http://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/Channel.html#getExitStatus()

    我认为该函数在hdfs 命令完成之前被调用。这个example 一直等到通道关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多