private void handleJobStart(JSONObject event) {
SparkJob job = new SparkJob();
job.setTags(new HashMap<>(this.app.getTags()));
job.setTimestamp(app.getTimestamp());
int jobId = JSONUtils.getInt(event, "Job ID");
job.getTags().put(SparkJobTagName.SPARK_JOB_ID.toString(), Integer.toString(jobId));
long submissionTime = JSONUtils.getLong(event, "Submission Time", lastEventTime);
job.setSubmissionTime(submissionTime);
this.lastEventTime = submissionTime;
job.setNumActiveStages(0);
job.setNumActiveTasks(0);
this.jobs.put(jobId, job);
this.jobStageMap.put(jobId, new HashSet<String>());
JSONArray stages = JSONUtils.getJSONArray(event, "Stage Infos");
int stagesSize = (stages == null ? 0 : stages.size());
job.setNumStages(stagesSize);
for (int i = 0; i < stagesSize; i++) {
JSONObject stageInfo = (JSONObject) stages.get(i);
int stageId = JSONUtils.getInt(stageInfo, "Stage ID");
int stageAttemptId = JSONUtils.getInt(stageInfo, "Stage Attempt ID");
String stageName = JSONUtils.getString(stageInfo, "Stage Name");
int numTasks = JSONUtils.getInt(stageInfo, "Number of Tasks");
this.initiateStage(jobId, stageId, stageAttemptId, stageName, numTasks);
}
}