From a39ce83a18652b0e947bb6e1e716fd9b4e503489 Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Thu, 8 Sep 2011 15:52:25 +0000 Subject: [PATCH] HBASE-4297 TableMapReduceUtil overwrites user supplied options git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1166767 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 2 ++ .../hadoop/hbase/HBaseConfiguration.java | 20 +++++++++++++------ .../hbase/mapreduce/TableMapReduceUtil.java | 12 +++++------ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index eb72af32be1..35a698af272 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -247,6 +247,8 @@ Release 0.91.0 - Unreleased (Ming Ma via garyh) HBASE-4341 HRS#closeAllRegions should take care of HRS#onlineRegions's weak consistency (Jieshan Bean) + HBASE-4297 TableMapReduceUtil overwrites user supplied options + (Jan Lukavsky) IMPROVEMENTS HBASE-3290 Max Compaction Size (Nicolas Spiegelberg via Stack) diff --git a/src/main/java/org/apache/hadoop/hbase/HBaseConfiguration.java b/src/main/java/org/apache/hadoop/hbase/HBaseConfiguration.java index 55cf55eef9d..06fd29c881e 100644 --- a/src/main/java/org/apache/hadoop/hbase/HBaseConfiguration.java +++ b/src/main/java/org/apache/hadoop/hbase/HBaseConfiguration.java @@ -54,9 +54,7 @@ public class HBaseConfiguration extends Configuration { public HBaseConfiguration(final Configuration c) { //TODO:replace with private constructor this(); - for (Entrye: c) { - set(e.getKey(), e.getValue()); - } + merge(this, c); } private static void checkDefaultsVersion(Configuration conf) { @@ -109,9 +107,19 @@ public class HBaseConfiguration extends Configuration { */ public static Configuration create(final Configuration that) { Configuration conf = create(); - for (Entrye: that) { - conf.set(e.getKey(), e.getValue()); - } + merge(conf, that); return conf; } + + /** + * Merge two configurations. + * @param destConf the configuration that will be overwritten with items + * from the srcConf + * @param srcConf the source configuration + **/ + public static void merge(Configuration destConf, Configuration srcConf) { + for (Entry e : srcConf) { + destConf.set(e.getKey(), e.getValue()); + } + } } diff --git a/src/main/java/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java b/src/main/java/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java index ff05df85d73..ad88b76a8fd 100644 --- a/src/main/java/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java +++ b/src/main/java/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.java @@ -126,10 +126,10 @@ public class TableMapReduceUtil { if (outputValueClass != null) job.setMapOutputValueClass(outputValueClass); if (outputKeyClass != null) job.setMapOutputKeyClass(outputKeyClass); job.setMapperClass(mapper); - HBaseConfiguration.addHbaseResources(job.getConfiguration()); - job.getConfiguration().set(TableInputFormat.INPUT_TABLE, table); - job.getConfiguration().set(TableInputFormat.SCAN, - convertScanToString(scan)); + Configuration conf = job.getConfiguration(); + HBaseConfiguration.merge(conf, HBaseConfiguration.create(conf)); + conf.set(TableInputFormat.INPUT_TABLE, table); + conf.set(TableInputFormat.SCAN, convertScanToString(scan)); if (addDependencyJars) { addDependencyJars(job); } @@ -333,8 +333,8 @@ public class TableMapReduceUtil { Class partitioner, String quorumAddress, String serverClass, String serverImpl, boolean addDependencyJars) throws IOException { - Configuration conf = job.getConfiguration(); - HBaseConfiguration.addHbaseResources(conf); + Configuration conf = job.getConfiguration(); + HBaseConfiguration.merge(conf, HBaseConfiguration.create(conf)); job.setOutputFormatClass(TableOutputFormat.class); if (reducer != null) job.setReducerClass(reducer); conf.set(TableOutputFormat.OUTPUT_TABLE, table);