Merge branch '1.4.5-SNAPSHOT' into 1.5.2-SNAPSHOT
Conflicts:
core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/5413823d
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/5413823d
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/5413823d
Branch: refs/heads/1.6.0-SNAPSHOT
Commit: 5413823d6ca91454c81a48730fa75633bd463745
Parents: 22f9559 88761e0
Author: Josh Elser els...@apache.org
Authored: Tue Mar 25 13:55:54 2014 -0700
Committer: Josh Elser els...@apache.org
Committed: Tue Mar 25 13:55:54 2014 -0700
--
.../accumulo/core/iterators/Combiner.java | 92 +++-
1 file changed, 51 insertions(+), 41 deletions(-)
--
http://git-wip-us.apache.org/repos/asf/accumulo/blob/5413823d/core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
--
diff --cc core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
index 21cbfe5,000..58071cf
mode 100644,00..100644
--- a/core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
+++ b/core/src/main/java/org/apache/accumulo/core/iterators/Combiner.java
@@@ -1,313 -1,0 +1,323 @@@
+/*
+ * 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.accumulo.core.iterators;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+
+import org.apache.accumulo.core.client.IteratorSetting;
+import org.apache.accumulo.core.client.IteratorSetting.Column;
++import org.apache.accumulo.core.client.ScannerBase;
+import org.apache.accumulo.core.data.ByteSequence;
+import org.apache.accumulo.core.data.Key;
+import org.apache.accumulo.core.data.PartialKey;
+import org.apache.accumulo.core.data.Range;
+import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.iterators.conf.ColumnSet;
++import org.apache.hadoop.io.Text;
+import org.apache.log4j.Logger;
+
+/**
- * A SortedKeyValueIterator that combines the Values for different versions
(timestamps) of a Key into a single Value. Combiner will replace one or more
- * versions of a Key and their Values with the most recent Key and a Value
which is the result of the reduce method.
++ * A SortedKeyValueIterator that combines the Values for different versions
(timestamp) of a Key within a row into a single Value. Combiner will replace
one or
++ * more versions of a Key and their Values with the most recent Key and a
Value which is the result of the reduce method. An {@link
IteratorSetting.Column}
++ * which only specifies a column family will combine all Keys in that column
family individually. Similarly, a {@link IteratorSetting.Column} which
specifies a
++ * column family and column qualifier will combine all Keys in column family
and qualifier individually. Combination is only ever performed on multiple
versions
++ * and not across column qualifiers or column visibilities.
+ *
- * Subclasses must implement a reduce method: {@code public Value reduce(Key
key, IteratorValue iter)}.
++ * Implementations must provide a reduce method: {@code public Value
reduce(Key key, IteratorValue iter)}.
+ *
+ * This reduce method will be passed the most recent Key and an iterator over
the Values for all non-deleted versions of that Key. A combiner will not combine
+ * keys that differ by more than the timestamp.
++ *
++ * This class and its implementations do not automatically filter out
unwanted columns from those being combined, thus it is generally recommended to
use a
++ * {@link Combiner} implementation with the {@link
ScannerBase#fetchColumnFamily(Text)} or {@link ScannerBase#fetchColumn(Text,
Text)} methods.
+ */
+public abstract class Combiner extends WrappingIterator implements
OptionDescriber {
+ static final Logger log =