DownwardProtocol.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
- /**
- * 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;
- import org.apache.hadoop.mapred.InputSplit;
- import org.apache.hadoop.mapred.JobConf;
- /**
- * The abstract description of the downward (from Java to C++) Pipes protocol.
- * All of these calls are asynchronous and return before the message has been
- * processed.
- */
- interface DownwardProtocol<K extends WritableComparable, V extends Writable> {
- /**
- * Start communication
- * @throws IOException
- */
- void start() throws IOException;
-
- /**
- * Set the JobConf for the task.
- * @param conf
- * @throws IOException
- */
- void setJobConf(JobConf conf) throws IOException;
-
- /**
- * Set the input types for Maps.
- * @param keyType the name of the key's type
- * @param valueType the name of the value's type
- * @throws IOException
- */
- void setInputTypes(String keyType, String valueType) throws IOException;
-
- /**
- * Run a map task in the child.
- * @param split The input split for this map.
- * @param numReduces The number of reduces for this job.
- * @param pipedInput Is the input coming from Java?
- * @throws IOException
- */
- void runMap(InputSplit split, int numReduces,
- boolean pipedInput) throws IOException;
-
- /**
- * For maps with pipedInput, the key/value pairs are sent via this messaage.
- * @param key The record's key
- * @param value The record's value
- * @throws IOException
- */
- void mapItem(K key, V value) throws IOException;
-
- /**
- * Run a reduce task in the child
- * @param reduce the index of the reduce (0 .. numReduces - 1)
- * @param pipedOutput is the output being sent to Java?
- * @throws IOException
- */
- void runReduce(int reduce, boolean pipedOutput) throws IOException;
-
- /**
- * The reduce should be given a new key
- * @param key the new key
- * @throws IOException
- */
- void reduceKey(K key) throws IOException;
-
- /**
- * The reduce should be given a new value
- * @param value the new value
- * @throws IOException
- */
- void reduceValue(V value) throws IOException;
-
- /**
- * The task has no more input coming, but it should finish processing it's
- * input.
- * @throws IOException
- */
- void endOfInput() throws IOException;
-
- /**
- * The task should stop as soon as possible, because something has gone wrong.
- * @throws IOException
- */
- void abort() throws IOException;
-
- /**
- * Flush the data through any buffers.
- */
- void flush() throws IOException;
-
- /**
- * Close the connection.
- */
- void close() throws IOException, InterruptedException;
- }