blob: eb38aae22357b1ac0b7927120af0ace0f4d564f2 [file] [log] [blame]
/**
* 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.hadoop.mapred.pipes;
import java.io.IOException;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableComparable;
/**
* The interface for the messages that can come up from the child. All of these
* calls are asynchronous and return before the message has been processed.
*/
interface UpwardProtocol<K extends WritableComparable, V extends Writable> {
/**
* Output a record from the child.
* @param key the record's key
* @param value the record's value
* @throws IOException
*/
void output(K key, V value) throws IOException;
/**
* Map functions where the application has defined a partition function
* output records along with their partition.
* @param reduce the reduce to send this record to
* @param key the record's key
* @param value the record's value
* @throws IOException
*/
void partitionedOutput(int reduce, K key,
V value) throws IOException;
/**
* Update the task's status message
* @param msg the string to display to the user
* @throws IOException
*/
void status(String msg) throws IOException;
/**
* Report making progress (and the current progress)
* @param progress the current progress (0.0 to 1.0)
* @throws IOException
*/
void progress(float progress) throws IOException;
/**
* Report that the application has finished processing all inputs
* successfully.
* @throws IOException
*/
void done() throws IOException;
/**
* Report that the application or more likely communication failed.
* @param e
*/
void failed(Throwable e);
/**
* Register a counter with the given id and group/name.
* @param group counter group
* @param name counter name
* @throws IOException
*/
void registerCounter(int id, String group, String name) throws IOException;
/**
* Increment the value of a registered counter.
* @param id counter id of the registered counter
* @param amount increment for the counter value
* @throws IOException
*/
void incrementCounter(int id, long amount) throws IOException;
}