/ / Pyhive, SASL et Python 3.5 - python, hadoop, ruche, connexion, sasl

Pyhive, SASL et Python 3.5 - python, hadoop, ruche, connexion, sasl

J'ai essayé de définir une connexion ruche comme décrit ici: Comment accéder à Hive via Python? en utilisant la ruche. Connexion avec python 3.5.2 (installé sur un cladera BDA Linux) mais le package SASL semble poser problème. J'ai vu sur un forum que SASL est compatible uniquement avec 2.7 python. Est-ce correct? Qu'est-ce qui m'a manqué / mal fait?

from pyhive import hive
conn = hive.Connection(host="myserver", port=10000)
import pandas as pd

Message d'erreur

TTransportException Traceback (most recent call last)
in ()
1 from pyhive import hive
2 #conn = hive.Connection(host="myserver", port=10000)
----> 3 conn = hive.Connection(host="myserver")
4 import pandas as pd

/opt/anaconda3/lib/python3.5/site-packages/pyhive/hive.py in init(self, host, port, username, database, auth, configuration)
102
103 try:
--> 104 self._transport.open()
105 open_session_req = ttypes.TOpenSessionReq(
106 client_protocol=protocol_version,

/opt/anaconda3/lib/python3.5/site-packages/thrift_sasl/init.py in open(self)
70 if not ret:
71 raise TTransportException(type=TTransportException.NOT_OPEN,
---> **72 message=("Could not start SASL: %s" % self.sasl.getError()))**
73
74 # Send initial response

TTransportException: TTransportException(message="Could not start SASL: b"Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found"", type=1)

Réponses:

0 pour la réponse № 1

vérifiez si toutes les dépendances sont installées:

gcc-c++
python-devel.x86_64
cyrus-sasl-devel.x86_64

(en supposant que vous êtes sur Windows)


0 pour la réponse № 2

Nous (je devrais dire l'équipe informatique) trouvons une solution

Mise à niveau des paquets python thrift (version 0.10.0) et PyHive (version 0.3.0) ne savent pas pourquoi la version que nous avons utilisée n’était pas la plus récente.

Ajout de ce qui suit:

<property>
<name>hive.server2.authentication</name>
<value>NOSASL</value>
</property>

Aux paramètres de configuration Hive suivants dans Cloudera Manager:

Extrait de configuration avancée HiveServer2 (soupape de sécurité) pour hive-site.xml Extrait de configuration avancée du client Hive (soupape de sécurité) pour hive-site.xml nécessaire pour que HUE fonctionne

from pyhive import hive
conn = hive.Connection(host="myserver", auth="NOSASL")
import pandas as pd
import sys

df = pd.read_sql("SELECT * FROM my_table", conn)
print(sys.getsizeof(df))
df.head()

travaillé sans problème / erreur.

Meilleur, À M