public Map<String, Map<String, JobExecutionAPIEntity>> recover() { //we need read from zookeeper, path looks like /apps/mr/running/yarnAppId/jobId/ //<yarnAppId, <jobId, JobExecutionAPIEntity>> Map<String, Map<String, JobExecutionAPIEntity>> result = new HashMap<>(); Map<String, Map<String, Pair<Map<String, String>, AppInfo>>> apps = this.runningJobManager.recover(); for (String appId : apps.keySet()) { result.put(appId, new HashMap<>()); Map<String, Pair<Map<String, String>, AppInfo>> jobs = apps.get(appId); for (String jobId : jobs.keySet()) { Pair<Map<String, String>, AppInfo> job = jobs.get(jobId); JobExecutionAPIEntity jobExecutionAPIEntity = new JobExecutionAPIEntity(); jobExecutionAPIEntity.setTags(job.getLeft()); jobExecutionAPIEntity.setAppInfo(job.getRight()); jobExecutionAPIEntity.setTimestamp(job.getRight().getStartedTime()); result.get(appId).put(jobId, jobExecutionAPIEntity); } } return result; }
public Map<String, Map<String, SparkAppEntity>> recover() { //we need read from zookeeper, path looks like /apps/mr/running/yarnAppId/jobId/ //<yarnAppId, <jobId, JobExecutionAPIEntity>> Map<String, Map<String, SparkAppEntity>> result = new HashMap<>(); Map<String, Map<String, Pair<Map<String, String>, AppInfo>>> apps = this.runningJobManager.recover(); for (String appId : apps.keySet()) { result.put(appId, new HashMap<>()); Map<String, Pair<Map<String, String>, AppInfo>> jobs = apps.get(appId); for (String jobId : jobs.keySet()) { Pair<Map<String, String>, AppInfo> job = jobs.get(jobId); SparkAppEntity sparkAppEntity = new SparkAppEntity(); sparkAppEntity.setTags(job.getLeft()); sparkAppEntity.setAppInfo(job.getRight()); sparkAppEntity.setTimestamp(job.getRight().getStartedTime()); result.get(appId).put(jobId, sparkAppEntity); } } return result; }