Search in sources :

Example 1 with DAGScheduler

use of org.apache.spark.scheduler.DAGScheduler in project zeppelin by apache.

the class SparkInterpreter method getProgress.

@Override
public int getProgress(InterpreterContext context) {
    String jobGroup = Utils.buildJobGroupId(context);
    int completedTasks = 0;
    int totalTasks = 0;
    DAGScheduler scheduler = sc.dagScheduler();
    if (scheduler == null) {
        return 0;
    }
    HashSet<ActiveJob> jobs = scheduler.activeJobs();
    if (jobs == null || jobs.size() == 0) {
        return 0;
    }
    Iterator<ActiveJob> it = jobs.iterator();
    while (it.hasNext()) {
        ActiveJob job = it.next();
        String g = (String) job.properties().get("spark.jobGroup.id");
        if (jobGroup.equals(g)) {
            int[] progressInfo = null;
            try {
                Object finalStage = job.getClass().getMethod("finalStage").invoke(job);
                if (sparkVersion.getProgress1_0()) {
                    progressInfo = getProgressFromStage_1_0x(sparkListener, finalStage);
                } else {
                    progressInfo = getProgressFromStage_1_1x(sparkListener, finalStage);
                }
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
                logger.error("Can't get progress info", e);
                return 0;
            }
            totalTasks += progressInfo[0];
            completedTasks += progressInfo[1];
        }
    }
    if (totalTasks == 0) {
        return 0;
    }
    return completedTasks * 100 / totalTasks;
}
Also used : DAGScheduler(org.apache.spark.scheduler.DAGScheduler) InvocationTargetException(java.lang.reflect.InvocationTargetException) ActiveJob(org.apache.spark.scheduler.ActiveJob)

Aggregations

InvocationTargetException (java.lang.reflect.InvocationTargetException)1 ActiveJob (org.apache.spark.scheduler.ActiveJob)1 DAGScheduler (org.apache.spark.scheduler.DAGScheduler)1