Trước đây, tôi đã sử dụng org.apache.hadoop.mapred.JobClient#getJob(org.apache.hadoop.mapred.JobID)
để nhận số RunningJob
. Cuộc gọi này được thực hiện từ phương thức gọi lại hoàn thành công việc, tuy nhiên, dường như với tôi rằng có vấn đề về thời gian nếu công việc đã hoàn thành thì phương thức trên getJob()
không thể tìm thấy và trả về giá trị rỗng. Tôi có thể xác nhận rằng công việc đã được hoàn thành từ giao diện người dùng cụm.Nhận bản đồ hiện có về việc phân chia công việc từ cụm (công việc có thể đang chạy hoặc hoàn thành)
Cách nhau RunningJob
, có cách nào để nhận đối tượng org.apache.hadoop.mapreduce.Job
của công việc được bản đồ cho org.apache.hadoop.mapreduce.JobID
, bất kể công việc hiện đang chạy hay đã hoàn thành chưa?
Tôi cố gắng để mã hóa lên một cái gì đó như:
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);
tôi có thể thấy jobId đúng, và cũng có thể thấy đối tượng cụm .. nhưng phương pháp cluster.getJob()
trả về null, vì vậy bản thân công việc là null .
Có điều gì tôi thiếu ở đây không?
Tôi không cần các công việc đang chạy .. Tôi cần một API có thể trả về cả hoạt động cũng như công việc đã hoàn thành .. –
Điều này có thể lấy được thông qua getAllJobStatuses(). Tôi đã thực hiện chỉnh sửa tách các công việc đang chạy khỏi các công việc đã hoàn thành. – Denis
Tôi cần bộ đếm mr để hoàn thành công việc. –