diff --git jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index 0b0db43..10218c5 100644 --- jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -73,6 +73,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.security.KeyStore; import java.security.SecureRandom; import java.sql.Array; @@ -100,6 +102,7 @@ import java.util.Properties; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; +import java.util.logging.Level; /** * HiveConnection. @@ -139,9 +142,20 @@ public HiveConnection(String uri, Properties info) throws SQLException { // sess_var_list -> sessConfMap // hive_conf_list -> hiveConfMap // hive_var_list -> hiveVarMap - host = connParams.getHost(); - port = connParams.getPort(); sessConfMap = connParams.getSessionVars(); + + if(isCanonicalNameUse()) { + try { + host = InetAddress.getByName(connParams.getHost()).getCanonicalHostName(); + } catch (UnknownHostException ex) { + LOG.warn(ex.getMessage()); + host = connParams.getHost(); + } + } + else { + host = connParams.getHost(); + } + port = connParams.getPort(); isEmbeddedMode = connParams.isEmbeddedMode(); if (sessConfMap.containsKey(JdbcConnectionParams.FETCH_SIZE)) { @@ -636,6 +650,10 @@ private boolean isZkDynamicDiscoveryMode() { && (JdbcConnectionParams.SERVICE_DISCOVERY_MODE_ZOOKEEPER.equalsIgnoreCase(sessConfMap .get(JdbcConnectionParams.SERVICE_DISCOVERY_MODE))); } + + private boolean isCanonicalNameUse() { + return "true".equalsIgnoreCase(sessConfMap.get(JdbcConnectionParams.USE_CANONICAL_NAME)); + } private void logZkDiscoveryMessage(String message) { if (isZkDynamicDiscoveryMode()) { diff --git jdbc/src/java/org/apache/hive/jdbc/Utils.java jdbc/src/java/org/apache/hive/jdbc/Utils.java index 42181d7..ef7fd4a 100644 --- jdbc/src/java/org/apache/hive/jdbc/Utils.java +++ jdbc/src/java/org/apache/hive/jdbc/Utils.java @@ -118,6 +118,7 @@ static final String HTTP_HEADER_PREFIX = "http.header."; // Set the fetchSize static final String FETCH_SIZE = "fetchSize"; + static final String USE_CANONICAL_NAME = "useCanonicalName"; // --------------- Begin 2 way ssl options ------------------------- // Use two way ssl. This param will take effect only when ssl=true