diff --git a/kite-data/kite-data-core/src/main/java/org/kitesdk/data/spi/DefaultConfiguration.java b/kite-data/kite-data-core/src/main/java/org/kitesdk/data/spi/DefaultConfiguration.java index e3dd361..1bfc6f6 100644 --- a/kite-data/kite-data-core/src/main/java/org/kitesdk/data/spi/DefaultConfiguration.java +++ b/kite-data/kite-data-core/src/main/java/org/kitesdk/data/spi/DefaultConfiguration.java @@ -18,6 +18,9 @@ package org.kitesdk.data.spi; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; +import org.kitesdk.compat.Hadoop; + +import java.util.Map; /** * Manages a default Hadoop {@link Configuration}. @@ -36,6 +39,8 @@ public class DefaultConfiguration { // initialize the default configuration from the environment private static boolean initDone = false; private static Configuration conf; + private static ThreadLocal sessionConf = + new ThreadLocal(); static{ // read system property for Oozie Action Configuration XML @@ -65,7 +70,17 @@ public class DefaultConfiguration { * {@link #set(Configuration)} */ public static synchronized Configuration get() { - return new Configuration(conf); + Configuration defaultConf = new Configuration(conf); + if (sessionConf.get() != null) { + if (Hadoop.Configuration.addResource.isNoop()) { + for (Map.Entry entry : sessionConf.get()) { + defaultConf.set(entry.getKey(), entry.getValue()); + } + } else { + Hadoop.Configuration.addResource.invoke(defaultConf, sessionConf.get()); + } + } + return new Configuration(defaultConf); } /** @@ -85,4 +100,8 @@ public class DefaultConfiguration { DefaultConfiguration.initDone = true; } } + + public static synchronized void setSessionConf(Configuration conf) { + sessionConf.set(conf); + } }