diff --git jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java index fb18adb..0246535 100644 --- jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java +++ jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java @@ -20,13 +20,14 @@ import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.common.auth.HiveAuthUtils; +import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hive.jdbc.Utils.JdbcConnectionParams; import org.apache.hive.service.auth.HiveAuthFactory; import org.apache.hive.service.auth.KerberosSaslHelper; import org.apache.hive.service.auth.PlainSaslHelper; import org.apache.hive.service.auth.SaslQOP; -import org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService; import org.apache.hive.service.rpc.thrift.TCLIService; +import org.apache.hive.service.rpc.thrift.TCLIService.Iface; import org.apache.hive.service.rpc.thrift.TCancelDelegationTokenReq; import org.apache.hive.service.rpc.thrift.TCancelDelegationTokenResp; import org.apache.hive.service.rpc.thrift.TCloseSessionReq; @@ -173,8 +174,19 @@ public HiveConnection(String uri, Properties info) throws SQLException { supportedProtocols.add(TProtocolVersion.HIVE_CLI_SERVICE_PROTOCOL_V10); if (isEmbeddedMode) { - EmbeddedThriftBinaryCLIService embeddedClient = new EmbeddedThriftBinaryCLIService(); - embeddedClient.init(null); + TCLIService.Iface embeddedClient; + try { + // FIXME: possibly use a serviceloader for this? that may make it more straight-forward + Class clazz = (Class) Class.forName("org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService"); + embeddedClient=clazz.newInstance(); + + Method initMethod = clazz.getMethod("init", HiveConf.class); + initMethod.invoke(embeddedClient, (HiveConf)null); + } catch (ClassNotFoundException e) { + throw new RuntimeException("Please Load hive-service jar to the classpath to enable embedded mode"); + } catch (Exception e) { + throw new RuntimeException("Error initializing embedded mode", e); + } client = embeddedClient; // open client session diff --git service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java index dcb6338..ace0835 100644 --- service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java +++ service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java @@ -29,7 +29,6 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; -import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.thrift.DBTokenStore; @@ -41,7 +40,7 @@ import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.authorize.ProxyUsers; import org.apache.hive.service.cli.HiveSQLException; -import org.apache.hive.service.cli.thrift.ThriftCLIService; +import org.apache.hive.service.rpc.thrift.TCLIService; import org.apache.thrift.TProcessorFactory; import org.apache.thrift.transport.TSaslServerTransport; import org.apache.thrift.transport.TTransportException; @@ -192,7 +191,7 @@ public TTransportFactory getAuthTransFactory() throws LoginException { * @return * @throws LoginException */ - public TProcessorFactory getAuthProcFactory(ThriftCLIService service) throws LoginException { + public TProcessorFactory getAuthProcFactory(TCLIService.Iface service) throws LoginException { if (isSASLWithKerberizedHadoop()) { return KerberosSaslHelper.getKerberosProcessorFactory(saslServer, service); } else { diff --git service/src/java/org/apache/hive/service/auth/KerberosSaslHelper.java service/src/java/org/apache/hive/service/auth/KerberosSaslHelper.java index ea2c689..cf80a0a 100644 --- service/src/java/org/apache/hive/service/auth/KerberosSaslHelper.java +++ service/src/java/org/apache/hive/service/auth/KerberosSaslHelper.java @@ -25,7 +25,6 @@ import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge; import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server; -import org.apache.hive.service.cli.thrift.ThriftCLIService; import org.apache.hive.service.rpc.thrift.TCLIService; import org.apache.hive.service.rpc.thrift.TCLIService.Iface; import org.apache.thrift.TProcessor; @@ -36,7 +35,7 @@ public final class KerberosSaslHelper { public static TProcessorFactory getKerberosProcessorFactory(Server saslServer, - ThriftCLIService service) { + TCLIService.Iface service) { return new CLIServiceProcessorFactory(saslServer, service); } @@ -94,10 +93,10 @@ private KerberosSaslHelper() { private static class CLIServiceProcessorFactory extends TProcessorFactory { - private final ThriftCLIService service; + private final TCLIService.Iface service; private final Server saslServer; - public CLIServiceProcessorFactory(Server saslServer, ThriftCLIService service) { + public CLIServiceProcessorFactory(Server saslServer, TCLIService.Iface service) { super(null); this.service = service; this.saslServer = saslServer; diff --git service/src/java/org/apache/hive/service/auth/PlainSaslHelper.java service/src/java/org/apache/hive/service/auth/PlainSaslHelper.java index a161e15..5c0dd26 100644 --- service/src/java/org/apache/hive/service/auth/PlainSaslHelper.java +++ service/src/java/org/apache/hive/service/auth/PlainSaslHelper.java @@ -33,7 +33,7 @@ import org.apache.hive.service.auth.AuthenticationProviderFactory.AuthMethods; import org.apache.hive.service.auth.PlainSaslServer.SaslPlainProvider; -import org.apache.hive.service.cli.thrift.ThriftCLIService; +import org.apache.hive.service.rpc.thrift.TCLIService; import org.apache.hive.service.rpc.thrift.TCLIService.Iface; import org.apache.thrift.TProcessor; import org.apache.thrift.TProcessorFactory; @@ -44,7 +44,7 @@ public final class PlainSaslHelper { - public static TProcessorFactory getPlainProcessorFactory(ThriftCLIService service) { + public static TProcessorFactory getPlainProcessorFactory(TCLIService.Iface service) { return new SQLPlainProcessorFactory(service); } @@ -139,9 +139,9 @@ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallback private static final class SQLPlainProcessorFactory extends TProcessorFactory { - private final ThriftCLIService service; + private final TCLIService.Iface service; - SQLPlainProcessorFactory(ThriftCLIService service) { + SQLPlainProcessorFactory(TCLIService.Iface service) { super(null); this.service = service; }