Repository: accumulo Updated Branches: refs/heads/1.5.2-SNAPSHOT 0d2cd1c06 -> 34a44e700 refs/heads/1.6.0-SNAPSHOT 3354b92af -> 9843911d9
ACCUMULO-2566 Fix botched merge Fixing a bad merge for TeraSortIngest using reflection to get hadoop configuration objects. Copied the code from InputFormatBase because the method we need is not visible and adding it to the public API would be a terrible, terrible thing to do. Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/34a44e70 Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/34a44e70 Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/34a44e70 Branch: refs/heads/1.5.2-SNAPSHOT Commit: 34a44e700312a01822e046c89dd892616ef92e42 Parents: 0d2cd1c Author: Mike Drob <md...@cloudera.com> Authored: Sat Mar 29 00:48:19 2014 -0400 Committer: Mike Drob <md...@cloudera.com> Committed: Sat Mar 29 00:48:19 2014 -0400 ---------------------------------------------------------------------- .../simple/mapreduce/TeraSortIngest.java | 27 ++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/34a44e70/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TeraSortIngest.java ---------------------------------------------------------------------- diff --git a/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TeraSortIngest.java b/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TeraSortIngest.java index f131e6c..bdcf943 100644 --- a/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TeraSortIngest.java +++ b/examples/simple/src/main/java/org/apache/accumulo/examples/simple/mapreduce/TeraSortIngest.java @@ -21,6 +21,7 @@ package org.apache.accumulo.examples.simple.mapreduce; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -166,8 +167,8 @@ public class TeraSortIngest extends Configured implements Tool { */ @Override public List<InputSplit> getSplits(JobContext job) { - long totalRows = InputFormatBase.getConfiguration(job).getLong(NUMROWS, 0); - int numSplits = InputFormatBase.getConfiguration(job).getInt(NUMSPLITS, 1); + long totalRows = getConfiguration(job).getLong(NUMROWS, 0); + int numSplits = getConfiguration(job).getInt(NUMSPLITS, 1); long rowsPerSplit = totalRows / numSplits; System.out.println("Generating " + totalRows + " using " + numSplits + " maps with step of " + rowsPerSplit); ArrayList<InputSplit> splits = new ArrayList<InputSplit>(numSplits); @@ -181,6 +182,28 @@ public class TeraSortIngest extends Configured implements Tool { return splits; } + // TODO kill this when we drop Hadoop 1 support. + private static final Method GET_CONFIGURATION; + static { + try { + GET_CONFIGURATION = Class.forName("org.apache.hadoop.mapreduce.JobContext").getMethod("getConfiguration"); + } catch (SecurityException e) { + throw new RuntimeException("Could not get method.", e); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Could not get method.", e); + } catch (ClassNotFoundException e) { + throw new RuntimeException("Could not get JobContext declaration.", e); + } + } + + // This is copied from InputFormatBase because the implementation there is not public and we don not really want cruft like this in the public API. + private static Configuration getConfiguration(JobContext job) { + try { + return (Configuration) GET_CONFIGURATION.invoke(job, new Object[0]); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } private static String NUMSPLITS = "terasort.overridesplits";