HIVE-20002: Shipping jdbd-storage-handler dependency jars in LLAP (Daniel Dai, reviewed by Sergey Shelukhin)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/8f57e25b Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/8f57e25b Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/8f57e25b Branch: refs/heads/master-txnstats Commit: 8f57e25bb205d60d9022bbc185ffd8af5aae0fab Parents: 761597f Author: Daniel Dai <dai...@gmail.com> Authored: Fri Jun 29 22:05:06 2018 -0700 Committer: Daniel Dai <dai...@gmail.com> Committed: Fri Jun 29 22:05:06 2018 -0700 ---------------------------------------------------------------------- .../hadoop/hive/llap/cli/LlapServiceDriver.java | 23 ++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/8f57e25b/llap-server/src/java/org/apache/hadoop/hive/llap/cli/LlapServiceDriver.java ---------------------------------------------------------------------- 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..0f1d5ee 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 @@ -90,7 +90,8 @@ public class LlapServiceDriver { 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" + "org.apache.hive.storage.jdbc.JdbcStorageHandler", "org.apache.commons.dbcp.BasicDataSourceFactory", + "org.apache.commons.pool.impl.GenericObjectPool" }; private static final String HBASE_SERDE_CLASS = "org.apache.hadoop.hive.hbase.HBaseSerDe"; private static final String[] NEEDED_CONFIGS = LlapDaemonConfiguration.DAEMON_CONFIGS; @@ -433,7 +434,9 @@ public class LlapServiceDriver { localizeJarForClass(lfs, libDir, codecClassName, false); } } - + for (String className : getDbSpecificJdbcJars()) { + localizeJarForClass(lfs, libDir, className, false); + } if (options.getIsHBase()) { try { localizeJarForClass(lfs, libDir, HBASE_SERDE_CLASS, true); @@ -738,6 +741,22 @@ public class LlapServiceDriver { return udfs.keySet(); } + private void addJarForClassToListIfExists(String cls, List<String> jarList) { + try { + Class.forName(cls); + jarList.add(cls); + } catch (Exception e) { + } + } + private List<String> getDbSpecificJdbcJars() { + List<String> jdbcJars = new ArrayList<String>(); + addJarForClassToListIfExists("com.mysql.jdbc.Driver", jdbcJars); // add mysql jdbc driver + addJarForClassToListIfExists("org.postgresql.Driver", jdbcJars); // add postgresql jdbc driver + addJarForClassToListIfExists("oracle.jdbc.OracleDriver", jdbcJars); // add oracle jdbc driver + addJarForClassToListIfExists("com.microsoft.sqlserver.jdbc.SQLServerDriver", jdbcJars); // add mssql jdbc driver + return jdbcJars; + } + private void localizeJarForClass(FileSystem lfs, Path libDir, String className, boolean doThrow) throws IOException { String jarPath = null;