@@ -142,22 +142,33 @@ class _HiveClient:
142142 _ugi : Optional [List [str ]]
143143
144144 def __init__ (self , uri : str , ugi : Optional [str ] = None , kerberos_auth : Optional [bool ] = HIVE_KERBEROS_AUTH_DEFAULT ):
145- url_parts = urlparse (uri )
145+ self ._uri = uri
146+ self ._kerberos_auth = kerberos_auth
147+ self ._ugi = ugi .split (":" ) if ugi else None
148+
149+ self ._init_thrift_client ()
150+
151+ def _init_thrift_client (self ):
152+ url_parts = urlparse (self ._uri )
146153
147- transport = TSocket .TSocket (url_parts .hostname , url_parts .port )
154+ socket = TSocket .TSocket (url_parts .hostname , url_parts .port )
148155
149- if not kerberos_auth :
150- self ._transport = TTransport .TBufferedTransport (transport )
156+ if not self . _kerberos_auth :
157+ self ._transport = TTransport .TBufferedTransport (socket )
151158 else :
152- self ._transport = TTransport .TSaslClientTransport (transport , host = url_parts .hostname , service = "hive" )
159+ self ._transport = TTransport .TSaslClientTransport (socket , host = url_parts .hostname , service = "hive" )
153160
154161 protocol = TBinaryProtocol .TBinaryProtocol (self ._transport )
155162
156163 self ._client = Client (protocol )
157- self ._ugi = ugi .split (":" ) if ugi else None
158164
159165 def __enter__ (self ) -> Client :
160- self ._transport .open ()
166+ if not self ._kerberos_auth :
167+ self ._transport .open ()
168+ else :
169+ self ._init_thrift_client ()
170+ self ._transport .open ()
171+
161172 if self ._ugi :
162173 self ._client .set_ugi (* self ._ugi )
163174 return self ._client
0 commit comments