diff --git a/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java b/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java index 20fec7e..feefa2b 100644 --- a/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java +++ b/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java @@ -27,6 +27,7 @@ import java.net.URL; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -43,6 +44,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; +import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.hive.llap.LlapUtil; import org.apache.hadoop.hive.llap.configuration.LlapDaemonConfiguration; @@ -88,10 +90,8 @@ public class LlapServiceDriver { protected static final Logger LOG = LoggerFactory.getLogger(LlapServiceDriver.class.getName()); - private static final String[] DEFAULT_AUX_CLASSES = new String[] { - "org.apache.hive.hcatalog.data.JsonSerDe","org.apache.hadoop.hive.druid.DruidStorageHandler", - "org.apache.hive.storage.jdbc.JdbcStorageHandler" - }; + private static List DEFAULT_AUX_CLASSES; + private static final String HBASE_SERDE_CLASS = "org.apache.hadoop.hive.hbase.HBaseSerDe"; private static final String[] NEEDED_CONFIGS = LlapDaemonConfiguration.DAEMON_CONFIGS; private static final String[] OPTIONAL_CONFIGS = LlapDaemonConfiguration.SSL_DAEMON_CONFIGS; @@ -107,6 +107,37 @@ */ private final HiveConf conf; + // Static initialize block, adding dependency jars + { + DEFAULT_AUX_CLASSES = Lists.newArrayList( + "org.apache.hive.hcatalog.data.JsonSerDe","org.apache.hadoop.hive.druid.DruidStorageHandler", + "org.apache.hive.storage.jdbc.JdbcStorageHandler", "org.apache.commons.dbcp.BasicDataSourceFactory", + "org.apache.commons.pool.impl.GenericObjectPool"); + // Adding mysql jdbc driver if exists + try { + Class.forName("com.mysql.jdbc.Driver"); + DEFAULT_AUX_CLASSES.add("com.mysql.jdbc.Driver"); + } catch (Exception e) { + } + // Adding postgres jdbc driver if exists + try { + Class.forName("org.postgresql.Driver"); + DEFAULT_AUX_CLASSES.add("org.postgresql.Driver"); + } catch (Exception e) { + } + // Adding oracle jdbc driver if exists + try { + Class.forName("oracle.jdbc.OracleDriver"); + DEFAULT_AUX_CLASSES.add("oracle.jdbc.OracleDriver"); + } catch (Exception e) { + } + // Adding mssql jdbc driver if exists + try { + Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + DEFAULT_AUX_CLASSES.add("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + } catch (Exception e) { + } + } public LlapServiceDriver() { SessionState ss = SessionState.get(); conf = (ss != null) ? ss.getConf() : new HiveConf(SessionState.class);