public String toString() {
    StringBuilder s = new StringBuilder();
    s.append("JobInfo: [");

    for (Map.Entry<Integer, JobInfo> entry : _jobIdToInfo.entrySet()) {
      s.append("{id:" + entry.getKey() + ", value: " + entry.getValue() + "}");
    }

    s.append("]\nStageInfo: [");
    for (Map.Entry<StageAttemptId, StageInfo> entry : _stageIdToInfo.entrySet()) {
      s.append("{id:" + entry.getKey() + ", value: " + entry.getValue() + "}");
    }
    s.append("]");

    return s.toString();
  }
Job itself does not have a name, it will use its latest stage as the name.

@param jobId
@return
app/com/linkedin/drelephant/spark/legacydata/SparkJobProgressData.java