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 }