1

HDFS からいくつかのジョブ構成ファイルを読み取ろうとすると、奇妙なエラーが発生します。ファイルからジョブを取得しようとしており、ジョブ構成 XML ファイルをループで読み取っています。

抜粋:

for(JobStatus status : statuses)
{
    JobID jobId = null;
    try
    {
        jobId = status.getJobID(); //TODO check the hash-code/equals implementation of JobID
        if(!jobIdsUnderObservation.contains(jobId))
        { //explore jobs if it's new
            RunningJob runningJob = jobClient.getJob(jobId);
            if(runningJob != null)
            {
                String jobFile = runningJob.getJobFile();
                FileSystem fs = FileSystem.get(conf);
                if(fs.exists(new Path(jobFile)))
                {
                    String sessionId = null;
                    InputStream is = fs.open(new Path(jobFile));
                    conf.addResource(is);
                    sessionId = conf.get("hive.session.id"); //this particular line breaks 
                    //from the second file onwards 
                    if(sessionId.equals(this.sessionId))
                    {
                        jobIdsUnderObservation.add(jobId);
                    }
                }
            }
        }
    }
    catch(IOException ioe)
    {
        ioe.printStackTrace();
    }
    int prevStatus = 0;

最初のファイルは正常に読み取りますが、2 番目のファイル以降は壊れます。IOException: stream closed がスローされます。

4

1 に答える 1