/**
* (c) Copyright 2013 WibiData, Inc.
*
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
* Licensed 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.
*/
/**
* Producer classes for KijiMR clients.
* <p>
* A KijiProducer executes a function over a subset of the columns in a table row and produces
* output to be injected back into a column of that row. Producers can be run in the context of
* a MapReduce over entire Kiji tables, or on-demand over a single row at a time.
* The {@link org.kiji.mapreduce.produce.KijiProducer} class is the base class for all producers.
* Subclasses take inputs from {@link org.kiji.mapreduce.MapReduceJobInput} and produce output to
* Kiji.
* </p>
*
* <h2>Constructing a produce job:</h2>
* <p>
* A producer job that executes its function over each row in a table and injects the result
* back into the row can be constructed as follows:
* </p>
* <pre><code>
* // Configure and create the MapReduce job.
* final MapReduceJob job = KijiProduceJobBuilder.create()
* .withProducer(SimpleProducer.class)
* .withInputTable(mTable.getURI())
* .withOutput(new DirectKijiTableMapReduceJobOutput(mTable.getURI()))
* .build();
* </code></pre>
* <p>
* The <code>kiji produce</code> command line tool wraps this functionality and can be used
* for constructing produce jobs.
* </p>
* @see org.kiji.mapreduce.output.DirectKijiTableMapReduceJobOutput
*/
package org.kiji.mapreduce.produce;