diff --git llap-client/src/java/org/apache/hadoop/hive/llap/io/api/LlapIoProxy.java llap-client/src/java/org/apache/hadoop/hive/llap/io/api/LlapIoProxy.java index 34df11c..af28734 100644 --- llap-client/src/java/org/apache/hadoop/hive/llap/io/api/LlapIoProxy.java +++ llap-client/src/java/org/apache/hadoop/hive/llap/io/api/LlapIoProxy.java @@ -29,19 +29,10 @@ // Llap server depends on Hive execution, so the reverse cannot be true. We create the I/O // singleton once (on daemon startup); the said singleton server as the IO interface. - private static final Object instanceLock = new Object(); private static LlapIo io = null; - - // TODO: temporary interface. LLAP daemon should init this once during - // startup then others should use get w/o configuration. - public static LlapIo getOrCreateIo(Configuration conf) { - if (io != null) return io; - synchronized (instanceLock) { - if (io != null) return io; - initializeLlapIo(conf); - return io; - } + public static LlapIo getIo() { + return io; } public static void initializeLlapIo(Configuration conf) { @@ -53,10 +44,6 @@ public static void initializeLlapIo(Configuration conf) { } } - public static LlapIo getIo() { - return io; - } - private static LlapIo createIoImpl(Configuration conf) throws IOException { try { @SuppressWarnings("unchecked") diff --git llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java index 1a66568..0b38122 100644 --- llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java +++ llap-server/src/java/org/apache/hadoop/hive/llap/daemon/impl/LlapDaemon.java @@ -26,6 +26,7 @@ import org.apache.hadoop.hive.llap.daemon.ContainerRunner; import org.apache.hadoop.hive.llap.daemon.LlapDaemonConfiguration; import org.apache.hadoop.hive.llap.daemon.rpc.LlapDaemonProtocolProtos.RunContainerRequestProto; +import org.apache.hadoop.hive.llap.io.api.LlapIoProxy; import org.apache.hadoop.hive.llap.shufflehandler.ShuffleHandler; public class LlapDaemon extends AbstractService implements ContainerRunner { @@ -84,6 +85,7 @@ public LlapDaemon(LlapDaemonConfiguration daemonConf) { public void serviceInit(Configuration conf) { server.init(conf); containerRunner.init(conf); + LlapIoProxy.initializeLlapIo(conf); } @Override diff --git ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java index ea8cc43..831d317 100755 --- ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java @@ -83,7 +83,7 @@ /** * A cache of InputFormat instances. */ - private static Map> inputFormats + private static Map> inputFormats = new ConcurrentHashMap>(); private JobConf job; @@ -213,8 +213,7 @@ public void configure(JobConf job) { } LOG.info("Wrapping " + inputFormat); @SuppressWarnings("unchecked") - // TODO: should be LlapIoProxy.getIo eventually - LlapIo llapIo = LlapIoProxy.getOrCreateIo(conf); + LlapIo llapIo = LlapIoProxy.getIo(); return castInputFormat(llapIo.getInputFormat(inputFormat)); }