private List<SparkStageInfo> getSparkStagesInfo()throws HiveException { Integer sparkJobId = jobHandle.getSparkJobIds().size() == 1 ? jobHandle.getSparkJobIds().get(0) : null; if (sparkJobId == null) { return null; } Future<ArrayList<SparkStageInfo>> getStagesInfo = sparkClient.run( new GetSparkStagesInfoJob(jobHandle.getClientJobId(), sparkJobId)); try { return getStagesInfo.get(sparkClientTimeoutInSeconds, TimeUnit.SECONDS); } catch (TimeoutException e) { throw new HiveException(e, ErrorMsg.SPARK_GET_STAGES_INFO_TIMEOUT, Long.toString(sparkClientTimeoutInSeconds)); } catch (InterruptedException e) { throw new HiveException(e, ErrorMsg.SPARK_GET_STAGES_INFO_INTERRUPTED); } catch (ExecutionException e) { throw new HiveException(e, ErrorMsg.SPARK_GET_STAGES_INFO_EXECUTIONERROR, Throwables.getRootCause(e).getMessage()); } }