View Javadoc

1   /* Copyright (c) 2008 Sascha Kohlmann
2    *
3    * This program is free software: you can redistribute it and/or modify
4    * it under the terms of the GNU Affero General Public License as published by
5    * the Free Software Foundation, either version 3 of the License, or
6    * (at your option) any later version.
7    *
8    * This program is distributed in the hope that it will be useful,
9    * but WITHOUT ANY WARRANTY; without even the implied warranty of
10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11   * GNU Affero General Public License for more details.
12   *
13   * You should have received a copy of the GNU Affero General Public License
14   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15   */
16  package net.sf.eos.hadoop.mapred;
17  
18  import net.sf.eos.EosException;
19  import net.sf.eos.document.EosDocument;
20  
21  import org.apache.hadoop.io.WritableComparable;
22  
23  import java.util.Map;
24  
25  /**
26   * The key generator creates a key for the given document. The advantage is
27   * the support for replaceable strategies in key generation.
28   * <p>Implementations must be stateless.</p>
29   * @author Sascha Kohlmann
30   * @param <K> the type of the key in a mapreduce environment
31   */
32  public interface KeyGenerator<K extends WritableComparable> {
33  
34      /**
35       * Creates a new key.
36       * @param doc the document to create a key for
37       * @return the key
38       * @throws EosException if an error occurs
39       */
40      Map<K, EosDocument> createKeysForDocument(final EosDocument doc)
41          throws EosException;
42  }