Önceden, RunningJob
'u almak için org.apache.hadoop.mapred.JobClient#getJob(org.apache.hadoop.mapred.JobID)
kullanıyordum. Bu çağrı, iş tamamlama geri çağırma yönteminden yapıldı, ancak bana göre, işin zaten tamamlanmış olması durumunda yukarıdaki getJob()
yönteminin bulamıyor ve null değerini döndürdüğü bir zamanlama sorunu var. İşin küme UI'sinden tamamlandığını doğrulayabilirim.Var olan mapreduce işini kümeden alma (iş çalışıyor veya tamamlanmış olabilir)
ayrı RunningJob
tutulması, org.apache.hadoop.mapreduce.JobID
verilen mapred işin org.apache.hadoop.mapreduce.Job
nesneyi almak için bir yolu, işi o anda çalışan veya tamamlandıktan bakılmaksızın, var mı?
Cluster cluster = jobClient.getClusterHandle(); Job job = cluster.getJob(JobID.forName(jobId)); log.info("Trying to get actual job with id {} , found {} on cluster {}", JobID.forName(jobId), job, cluster);
Birazdan jobId görebilir ve ayrıca küme nesneyi görebilirsiniz .. ama cluster.getJob()
yöntem null döndürür, böylece iş kendisi null .
Burada eksik olduğum bir şey var mı?
Çalışan işlere ihtiyacım yok .. Hem çalıştırmayı hem de tamamlanmış işleri geri döndüren bir API'ye ihtiyacım var .. –
Bu getAllJobStatuses() aracılığıyla edinilebilir. Çalışan işleri tamamlanmış olanlardan ayıran düzenlemeyi yaptım. – Denis
Tamamlanmış işler için mr sayaçlarına ihtiyacım var. –