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 がスローされます。