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 }