/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.pig.backend.executionengine; import java.util.Iterator; import java.util.Properties; import java.io.OutputStream; import org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore; import org.apache.pig.data.Tuple; import org.apache.pig.tools.pigstats.PigStats; /** * Abstraction on a job that the execution engine runs. It allows the front-end to * retrieve information on job status and manage a running job. * */ public interface ExecJob { public enum JOB_STATUS { FAILED, COMPLETED } public static final String PROGRESS_KEY = "job.progress"; public JOB_STATUS getStatus(); /** * true is the physical plan has executed successfully and results are ready * to be retrieved * * @return true if execution has completed, false otherwise. * @throws ExecException */ public boolean hasCompleted() throws ExecException; /** * if query has executed successfully we want to retrieve the results * via iterating over them. * * @return iterator for resulting tuples * @throws ExecException */ public Iterator<Tuple> getResults() throws ExecException; /** * Returns the alias of relation generated by this job */ public String getAlias() throws ExecException; /** * Get configuration information * * @return configuration information for the execution engine */ public Properties getConfiguration(); /** * Can be information about the state (not submitted, e.g. the execute method * has not been called yet; not running, e.g. execute has been issued, * but job is waiting; running...; completed; aborted...; progress information * * @return statistics relevant to the execution engine */ public PigStats getStatistics(); /** * * @return {@link POStore} object associated with the store */ public POStore getPOStore(); /** * hook for asynchronous notification of job completion pushed from the back-end */ public void completionNotification(Object cookie); /** * Kills current job. * * @throws ExecException */ public void kill() throws ExecException; /** * Collecting various forms of outputs */ public void getLogs(OutputStream log) throws ExecException; public void getSTDOut(OutputStream out) throws ExecException; public void getSTDError(OutputStream error) throws ExecException; /** * Get exceptions that happened during execution */ public Exception getException(); }