/** * @param sessionConfig session configuration * @param numContainers number of containers to pre-warm * @param localResources additional resources to pre-warm with * @return prewarm context object */ public PreWarmContext createPreWarmContext( TezSessionConfiguration sessionConfig, int numContainers, Map<String, LocalResource> localResources) throws IOException, TezException { Configuration conf = sessionConfig.getTezConfiguration(); ProcessorDescriptor prewarmProcDescriptor = new ProcessorDescriptor(HivePreWarmProcessor.class.getName()); prewarmProcDescriptor.setUserPayload(MRHelpers.createUserPayloadFromConf(conf)); PreWarmContext context = new PreWarmContext( prewarmProcDescriptor, getContainerResource(conf), numContainers, new VertexLocationHint(null)); Map<String, LocalResource> combinedResources = new HashMap<String, LocalResource>(); combinedResources.putAll(sessionConfig.getSessionResources()); if (localResources != null) { combinedResources.putAll(localResources); } context.setLocalResources(combinedResources); /* boiler plate task env */ Map<String, String> environment = new HashMap<String, String>(); MRHelpers.updateEnvironmentForMRTasks(conf, environment, true); context.setEnvironment(environment); context.setJavaOpts(getContainerJavaOpts(conf)); return context; }