accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cjno...@apache.org
Subject git commit: ACCUMULO-391. Iterators can be set per table. The addIterator() method that does not take a table now applies that iterator to all tables.
Date Thu, 12 Sep 2013 05:05:31 GMT
Updated Branches:
  refs/heads/ACCUMULO-391 48c2d30b8 -> f8d28e7be


ACCUMULO-391. Iterators can be set per table. The addIterator() method that does not take
a table now applies that iterator to all tables.


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/f8d28e7b
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/f8d28e7b
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/f8d28e7b

Branch: refs/heads/ACCUMULO-391
Commit: f8d28e7be09ed8947569e6206768f66c6db31267
Parents: 48c2d30
Author: Corey J. Nolet <cjnolet@gmail.com>
Authored: Thu Sep 12 01:04:41 2013 -0400
Committer: Corey J. Nolet <cjnolet@gmail.com>
Committed: Thu Sep 12 01:04:41 2013 -0400

----------------------------------------------------------------------
 .../core/client/mapred/InputFormatBase.java     |   2 +-
 .../core/client/mapreduce/InputFormatBase.java  | 139 +++++--------------
 .../mapreduce/lib/util/InputConfigurator.java   | 112 ++++++++++-----
 .../client/mapred/AccumuloInputFormatTest.java  |  10 +-
 .../mapreduce/AccumuloInputFormatTest.java      |   8 +-
 5 files changed, 123 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/f8d28e7b/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
b/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
index 6997277..bef5b94 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
@@ -394,7 +394,7 @@ public abstract class InputFormatBase<K,V> implements InputFormat<K,V>
{
    * @see #addIterator(JobConf, IteratorSetting)
    */
   protected static List<IteratorSetting> getIterators(JobConf job) {
-    return InputConfigurator.getIterators(CLASS, job);
+    return InputConfigurator.getDefaultIterators(CLASS, job);
   }
   
   /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/f8d28e7b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
index a67f85d..3d870ea 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
@@ -409,18 +409,35 @@ public abstract class InputFormatBase<K,V> extends InputFormat<K,V>
{
   }
   
   /**
-   * Encode an iterator on the input for this job.
+   * Encode an iterator on the default input table for this job.
    * 
    * @param job
    *          the Hadoop job instance to be configured
    * @param cfg
    *          the configuration of the iterator
    * @since 1.5.0
+   * @deprecated since 1.6.0
    */
+  @Deprecated
   public static void addIterator(Job job, IteratorSetting cfg) {
-    InputConfigurator.addIterator(CLASS, job.getConfiguration(), cfg);
+      InputConfigurator.addIterator(CLASS, job.getConfiguration(), cfg);
   }
-  
+
+  /**
+   * Encode an iterator on the input for this job for the specified table.
+   *
+   * @param job
+   *          the Hadoop job instance to be configured
+   * @param cfg
+   *          the configuration of the iterator
+   * @since 1.6.0
+   */
+  @Deprecated
+  public static void addIterator(Job job, IteratorSetting cfg, String table) {
+    InputConfigurator.addIterator(CLASS, job.getConfiguration(), table, cfg);
+  }
+
+
   /**
    * Gets a list of the iterator settings (for iterators to apply to a scanner) from this
configuration.
    * 
@@ -430,8 +447,21 @@ public abstract class InputFormatBase<K,V> extends InputFormat<K,V>
{
    * @since 1.5.0
    * @see #addIterator(Job, IteratorSetting)
    */
+  protected static List<IteratorSetting> getIterators(JobContext context, String table)
{
+    return InputConfigurator.getIterators(CLASS, getConfiguration(context), table);
+  }
+
+  /**
+   * Gets a list of the iterator settings (for iterators to apply to a scanner) from this
configuration.
+   *
+   * @param context
+   *          the Hadoop context for the configured job
+   * @return a list of iterators
+   * @since 1.5.0
+   * @see #addIterator(Job, IteratorSetting)
+   */
   protected static List<IteratorSetting> getIterators(JobContext context) {
-    return InputConfigurator.getIterators(CLASS, getConfiguration(context));
+    return InputConfigurator.getDefaultIterators (CLASS, getConfiguration(context));
   }
   
   /**
@@ -627,10 +657,10 @@ public abstract class InputFormatBase<K,V> extends InputFormat<K,V>
{
      *          the scanner to configure
      */
     protected void setupIterators(TaskAttemptContext context, Scanner scanner, String tableName)
{
-      List<IteratorSetting> iterators = getIterators(context);
-      for (IteratorSetting iterator : iterators) {
+      List<IteratorSetting> iterators = getIterators(context, tableName);
+      iterators.addAll (getIterators (context));
+      for (IteratorSetting iterator : iterators)
         scanner.addScanIterator(iterator);
-      }
     }
 
 
@@ -818,101 +848,6 @@ public abstract class InputFormatBase<K,V> extends InputFormat<K,V>
{
     return binnedRanges;
   }
   
-//  /**
-//   * Read the metadata table to get tablets and match up ranges to them.
-//   */
-//  @Override
-//  public List<InputSplit> getSplits(JobContext context) throws IOException {
-//    log.setLevel(getLogLevel(context));
-//    validateOptions(context);
-//
-//    boolean autoAdjust = getAutoAdjustRanges(context);
-//    String tableName = getDefaultInputTableName(context);
-//    List<Range> ranges = autoAdjust ? Range.mergeOverlapping(getRanges(context))
: getRanges(context);
-//
-//    if (ranges.isEmpty()) {
-//      ranges = new ArrayList<Range>(1);
-//      ranges.add(new Range());
-//    }
-//
-//    // get the metadata information for these ranges
-//    Map<String,Map<KeyExtent,List<Range>>> binnedRanges = new HashMap<String,Map<KeyExtent,List<Range>>>();
-//    TabletLocator tl;
-//    try {
-//      if (isOfflineScan(context)) {
-//        binnedRanges = binOfflineTable(context, tableName, ranges);
-//        while (binnedRanges == null) {
-//          // Some tablets were still online, try again
-//          UtilWaitThread.sleep(100 + (int) (Math.random() * 100)); // sleep randomly between
100 and 200 ms
-//          binnedRanges = binOfflineTable(context, tableName, ranges);
-//        }
-//      } else {
-//        Instance instance = getInstance(context);
-//        String tableId = null;
-//        tl = getTabletLocator(context);
-//        // its possible that the cache could contain complete, but old information about
a tables tablets... so clear it
-//        tl.invalidateCache();
-//        while (!tl.binRanges(new Credentials(getPrincipal(context), AuthenticationTokenSerializer.deserialize(getTokenClass(context),
getToken(context))),
-//            ranges, binnedRanges).isEmpty()) {
-//          if (!(instance instanceof MockInstance)) {
-//            if (tableId == null)
-//              tableId = Tables.getTableId(instance, tableName);
-//            if (!Tables.exists(instance, tableId))
-//              throw new TableDeletedException(tableId);
-//            if (Tables.getTableState(instance, tableId) == TableState.OFFLINE)
-//              throw new TableOfflineException(instance, tableId);
-//          }
-//          binnedRanges.clear();
-//          log.warn("Unable to locate bins for specified ranges. Retrying.");
-//          UtilWaitThread.sleep(100 + (int) (Math.random() * 100)); // sleep randomly between
100 and 200 ms
-//          tl.invalidateCache();
-//        }
-//      }
-//    } catch (Exception e) {
-//      throw new IOException(e);
-//    }
-//
-//    ArrayList<InputSplit> splits = new ArrayList<InputSplit>(ranges.size());
-//    HashMap<Range,ArrayList<String>> splitsToAdd = null;
-//
-//    if (!autoAdjust)
-//      splitsToAdd = new HashMap<Range,ArrayList<String>>();
-//
-//    HashMap<String,String> hostNameCache = new HashMap<String,String>();
-//
-//    for (Entry<String,Map<KeyExtent,List<Range>>> tserverBin : binnedRanges.entrySet())
{
-//      String ip = tserverBin.getKey().split(":", 2)[0];
-//      String location = hostNameCache.get(ip);
-//      if (location == null) {
-//        InetAddress inetAddress = InetAddress.getByName(ip);
-//        location = inetAddress.getHostName();
-//        hostNameCache.put(ip, location);
-//      }
-//
-//      for (Entry<KeyExtent,List<Range>> extentRanges : tserverBin.getValue().entrySet())
{
-//        Range ke = extentRanges.getKey().toDataRange();
-//        for (Range r : extentRanges.getValue()) {
-//          if (autoAdjust) {
-//            // divide ranges into smaller ranges, based on the tablets
-//            splits.add(new RangeInputSplit(tableName, ke.clip(r), new String[] {location}));
-//          } else {
-//            // don't divide ranges
-//            ArrayList<String> locations = splitsToAdd.get(r);
-//            if (locations == null)
-//              locations = new ArrayList<String>(1);
-//            locations.add(location);
-//            splitsToAdd.put(r, locations);
-//          }
-//        }
-//      }
-//    }
-//
-//    if (!autoAdjust)
-//      for (Entry<Range,ArrayList<String>> entry : splitsToAdd.entrySet())
-//        splits.add(new RangeInputSplit(tableName, entry.getKey(), entry.getValue().toArray(new
String[0])));
-//    return splits;
-//  }
-
   public List<InputSplit> getSplits(JobContext conf) throws IOException {
     log.setLevel(getLogLevel(conf));
     validateOptions(conf);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/f8d28e7b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/util/InputConfigurator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/util/InputConfigurator.java
b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/util/InputConfigurator.java
index 17e9b4c..0552dc6 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/util/InputConfigurator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/lib/util/InputConfigurator.java
@@ -59,6 +59,7 @@ import org.apache.hadoop.io.Text;
 import org.apache.hadoop.util.StringUtils;
 
 import static java.lang.String.format;
+import static java.util.Arrays.asList;
 import static org.apache.accumulo.core.Constants.UTF8;
 import static org.apache.accumulo.core.Constants.ZTABLE_NAME;
 import static org.apache.accumulo.core.client.mapreduce.lib.util.InputConfigurator.ScanOpts.COLUMNS;
@@ -368,10 +369,10 @@ public class InputConfigurator extends ConfiguratorBase {
     }
     return columns;
   }
-  
+
   /**
-   * Encode an iterator on the default input table for this job.
-   * 
+   * Encode an iterator on the input for this job.
+   *
    * @param implementingClass
    *          the class whose name will be used as a prefix for the property configuration
key
    * @param conf
@@ -379,33 +380,33 @@ public class InputConfigurator extends ConfiguratorBase {
    * @param cfg
    *          the configuration of the iterator
    * @since 1.5.0
-   * @deprecated since 1.6.0 in favor of addIterators();
    */
-  public static void addIterator(Class<?> implementingClass, Configuration conf, IteratorSetting
cfg) {
-    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    String newIter;
-    try {
-      cfg.write(new DataOutputStream(baos));
-      newIter = new String(encodeBase64 (baos.toByteArray ()), UTF8);
-      baos.close();
-    } catch (IOException e) {
-      throw new IllegalArgumentException("unable to serialize IteratorSetting");
-    }
-    
-    String iterators = conf.get(enumToConfKey(implementingClass, ITERATORS));
-    // No iterators specified yet, create a new string
-    if (iterators == null || iterators.isEmpty()) {
-      iterators = newIter;
-    } else {
-      // append the next iterator & reset
-      iterators = iterators.concat(COMMA_STR + newIter);
-    }
-    // Store the iterators w/ the job
-    conf.set (enumToConfKey (implementingClass, ITERATORS), iterators);
+  public static void addIterator(Class<?> implementingClass, Configuration conf, String
tableName, IteratorSetting cfg) {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      String newIter;
+      try {
+        cfg.write(new DataOutputStream(baos));
+        newIter = new String(encodeBase64 (baos.toByteArray ()), UTF8);
+        baos.close();
+      } catch (IOException e) {
+        throw new IllegalArgumentException("unable to serialize IteratorSetting");
+      }
+
+      String confKey = format("%s.%s", enumToConfKey(implementingClass, ITERATORS), tableName);
+      String iterators = conf.get(confKey);
+      // No iterators specified yet, create a new string
+      if (iterators == null || iterators.isEmpty()) {
+        iterators = newIter;
+      } else {
+        // append the next iterator & reset
+        iterators = iterators.concat(COMMA_STR + newIter);
+      }
+      // Store the iterators w/ the job
+      conf.set(confKey, iterators);
   }
 
   /**
-   * Encode an iterator on the input for this job.
+   * Encode an iterator on the input for all tables associated with this job.
    *
    * @param implementingClass
    *          the class whose name will be used as a prefix for the property configuration
key
@@ -414,9 +415,8 @@ public class InputConfigurator extends ConfiguratorBase {
    * @param cfg
    *          the configuration of the iterator
    * @since 1.5.0
-   * @deprecated since 1.6.0 in favor of addIterators();
    */
-  public static void addIterator(Class<?> implementingClass, Configuration conf, String
tableName, IteratorSetting cfg) {
+  public static void addIterator(Class<?> implementingClass, Configuration conf, IteratorSetting
cfg) {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     String newIter;
     try {
@@ -427,7 +427,8 @@ public class InputConfigurator extends ConfiguratorBase {
       throw new IllegalArgumentException("unable to serialize IteratorSetting");
     }
 
-    String iterators = conf.get(enumToConfKey(implementingClass, ITERATORS));
+    String confKey = enumToConfKey(implementingClass, ITERATORS);
+    String iterators = conf.get(confKey);
     // No iterators specified yet, create a new string
     if (iterators == null || iterators.isEmpty()) {
       iterators = newIter;
@@ -436,10 +437,11 @@ public class InputConfigurator extends ConfiguratorBase {
       iterators = iterators.concat(COMMA_STR + newIter);
     }
     // Store the iterators w/ the job
-    conf.set(enumToConfKey(implementingClass, ITERATORS), iterators);
+    conf.set(confKey, iterators);
   }
 
 
+
   /**
    * Gets a list of the iterator settings (for iterators to apply to a scanner) from this
configuration.
    * 
@@ -449,10 +451,11 @@ public class InputConfigurator extends ConfiguratorBase {
    *          the Hadoop configuration object to configure
    * @return a list of iterators
    * @since 1.5.0
-   * @see #addIterator(Class, Configuration, IteratorSetting)
+   * @see #addIterator(Class, Configuration, String, IteratorSetting)
    */
-  public static List<IteratorSetting> getIterators(Class<?> implementingClass,
Configuration conf) {
-    String iterators = conf.get(enumToConfKey(implementingClass, ITERATORS));
+  public static List<IteratorSetting> getIterators(Class<?> implementingClass,
Configuration conf, String table) {
+
+    String iterators = conf.get(format ("%s.%s", enumToConfKey (implementingClass, ITERATORS),
table));
     
     // If no iterators are present, return an empty list
     if (iterators == null || iterators.isEmpty())
@@ -473,7 +476,44 @@ public class InputConfigurator extends ConfiguratorBase {
     }
     return list;
   }
-  
+
+  /**
+   * Gets a list of the iterator settings (for iterators to apply to a scanner) from this
configuration.
+   *
+   * @param implementingClass
+   *          the class whose name will be used as a prefix for the property configuration
key
+   * @param conf
+   *          the Hadoop configuration object to configure
+   * @return a list of iterators
+   * @since 1.5.0
+   * @see #addIterator(Class, Configuration, String, IteratorSetting)
+   */
+  public static List<IteratorSetting> getDefaultIterators(Class<?> implementingClass,
Configuration conf) {
+
+    String iterators = conf.get(enumToConfKey (implementingClass, ITERATORS));
+
+    // If no iterators are present, return an empty list
+    if (iterators == null || iterators.isEmpty())
+      return new ArrayList<IteratorSetting>();
+
+    // Compose the set of iterators encoded in the job configuration
+    StringTokenizer tokens = new StringTokenizer(iterators, COMMA_STR);
+    List<IteratorSetting> list = new ArrayList<IteratorSetting>();
+    try {
+      while (tokens.hasMoreTokens()) {
+        String itstring = tokens.nextToken();
+        ByteArrayInputStream bais = new ByteArrayInputStream(decodeBase64 (itstring.getBytes
()));
+        list.add(new IteratorSetting(new DataInputStream(bais)));
+        bais.close();
+      }
+    } catch (IOException e) {
+      throw new IllegalArgumentException("couldn't decode iterator settings");
+    }
+    return list;
+  }
+
+
+
   /**
    * Controls the automatic adjustment of ranges for this job. This feature merges overlapping
ranges, then splits them to align with tablet boundaries.
    * Disabling this feature will cause exactly one Map task to be created for each specified
range. The default setting is enabled. *
@@ -682,8 +722,8 @@ public class InputConfigurator extends ConfiguratorBase {
 
       if (!conf.getBoolean(enumToConfKey(implementingClass, Features.USE_LOCAL_ITERATORS),
false)) {
         // validate that any scan-time iterators can be loaded by the the tablet servers
-        for (IteratorSetting iter : getIterators(implementingClass, conf)) {    // TODO:
These iterators need to be separated by table
-          for(String tableName : getInputTableNames (implementingClass, conf)) {
+        for(String tableName : getInputTableNames (implementingClass, conf)) {
+          for (IteratorSetting iter : getIterators(implementingClass, conf, tableName)) {
   // TODO: These iterators need to be separated by table
             if (!c.tableOperations().testClassLoad(tableName, iter.getIteratorClass(), SortedKeyValueIterator.class.getName()))
               throw new AccumuloException("Servers are unable to load " + iter.getIteratorClass()
+ " as a " + SortedKeyValueIterator.class.getName());
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/f8d28e7b/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloInputFormatTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloInputFormatTest.java
b/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloInputFormatTest.java
index 4f527e1..96113b1 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloInputFormatTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/mapred/AccumuloInputFormatTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.accumulo.core.client.mapred;
 
+import static org.apache.commons.codec.binary.Base64.encodeBase64;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -64,19 +65,18 @@ public class AccumuloInputFormatTest {
   @Test
   public void testSetIterator() throws IOException {
     JobConf job = new JobConf();
-    
     IteratorSetting is = new IteratorSetting(1, "WholeRow", "org.apache.accumulo.core.iterators.WholeRowIterator");
     AccumuloInputFormat.addIterator(job, is);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     is.write(new DataOutputStream(baos));
     String iterators = job.get("AccumuloInputFormat.ScanOpts.Iterators");
-    assertEquals(new String(Base64.encodeBase64(baos.toByteArray())), iterators);
+    assertEquals(new String(encodeBase64 (baos.toByteArray ())), iterators);
   }
   
   @Test
   public void testAddIterator() throws IOException {
     JobConf job = new JobConf();
-    
+
     AccumuloInputFormat.addIterator(job, new IteratorSetting(1, "WholeRow", WholeRowIterator.class));
     AccumuloInputFormat.addIterator(job, new IteratorSetting(2, "Versions", "org.apache.accumulo.core.iterators.VersioningIterator"));
     IteratorSetting iter = new IteratorSetting(3, "Count", "org.apache.accumulo.core.iterators.CountingIterator");
@@ -152,7 +152,7 @@ public class AccumuloInputFormatTest {
   @Test
   public void testGetIteratorSettings() throws IOException {
     JobConf job = new JobConf();
-    
+
     AccumuloInputFormat.addIterator(job, new IteratorSetting(1, "WholeRow", "org.apache.accumulo.core.iterators.WholeRowIterator"));
     AccumuloInputFormat.addIterator(job, new IteratorSetting(2, "Versions", "org.apache.accumulo.core.iterators.VersioningIterator"));
     AccumuloInputFormat.addIterator(job, new IteratorSetting(3, "Count", "org.apache.accumulo.core.iterators.CountingIterator"));
@@ -185,7 +185,7 @@ public class AccumuloInputFormatTest {
     JobConf job = new JobConf();
     
     String regex = ">\"*%<>\'\\";
-    
+
     IteratorSetting is = new IteratorSetting(50, regex, RegExFilter.class);
     RegExFilter.setRegexs(is, regex, null, null, null, false);
     AccumuloInputFormat.addIterator(job, is);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/f8d28e7b/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloInputFormatTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloInputFormatTest.java
b/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloInputFormatTest.java
index c9539c4..14f5775 100644
--- a/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloInputFormatTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/client/mapreduce/AccumuloInputFormatTest.java
@@ -62,7 +62,7 @@ public class AccumuloInputFormatTest {
   @Test
   public void testSetIterator() throws IOException {
     Job job = new Job();
-    
+
     IteratorSetting is = new IteratorSetting(1, "WholeRow", "org.apache.accumulo.core.iterators.WholeRowIterator");
     AccumuloInputFormat.addIterator(job, is);
     Configuration conf = job.getConfiguration();
@@ -75,7 +75,7 @@ public class AccumuloInputFormatTest {
   @Test
   public void testAddIterator() throws IOException {
     Job job = new Job();
-    
+
     AccumuloInputFormat.addIterator(job, new IteratorSetting(1, "WholeRow", WholeRowIterator.class));
     AccumuloInputFormat.addIterator(job, new IteratorSetting(2, "Versions", "org.apache.accumulo.core.iterators.VersioningIterator"));
     IteratorSetting iter = new IteratorSetting(3, "Count", "org.apache.accumulo.core.iterators.CountingIterator");
@@ -151,7 +151,7 @@ public class AccumuloInputFormatTest {
   @Test
   public void testGetIteratorSettings() throws IOException {
     Job job = new Job();
-    
+
     AccumuloInputFormat.addIterator(job, new IteratorSetting(1, "WholeRow", "org.apache.accumulo.core.iterators.WholeRowIterator"));
     AccumuloInputFormat.addIterator(job, new IteratorSetting(2, "Versions", "org.apache.accumulo.core.iterators.VersioningIterator"));
     AccumuloInputFormat.addIterator(job, new IteratorSetting(3, "Count", "org.apache.accumulo.core.iterators.CountingIterator"));
@@ -182,7 +182,7 @@ public class AccumuloInputFormatTest {
   @Test
   public void testSetRegex() throws IOException {
     Job job = new Job();
-    
+
     String regex = ">\"*%<>\'\\";
     
     IteratorSetting is = new IteratorSetting(50, regex, RegExFilter.class);


Mime
View raw message