2017-06-07 4 views
8

J'ai essayé les deux avec pycassa, cassandra.cluster et dse.cluster sans établir de connexion.Connexion python à cassandra un cluster à partir de windows avec DseAuthenticator et DseAuthorizer

Je sens que je me connecte au mauvais hôte, comme je l'écris le nom d'hôte des serveurs Linux et ne pas spécifier quoi que ce soit en ce qui concerne la cassandra.

Collegues me ont dit qu'ils ne savent de se connecter au serveur via cqlsh en ligne sur la machine linux. Cela semble juste inconvenant.

configurations spécifiques à cassandra.yaml

authenticator: com.datastax.bdp.cassandra.auth.DseAuthenticator 
authorizer: com.datastax.bdp.cassandra.auth.DseAuthorizer 

Ce que je fais dans pycassa:

import pycassa 
URIPORTLIST = ['12345.mycompany.net:9420'] 
pool = pycassa.ConnectionPool('my_keyspace', server_list=URIPORTLIST,credentials={'USERNAME':'fancycar','PASSWORD':'becauseimbatman'}, prefill=False) 
cf = pycassa.ColumnFamily(pool, 'my_table') 

Message d'erreur:

AllServersUnavailable: An attempt was made to connect to each of the servers twice, but none of the attempts succeeded. The last failure was TTransportException: Could not connect to 12345.mycompany.net:9420 

Avec dse.cluster

from dse.cluster import Cluster 
auth_provider = PlainTextAuthProvider(
     username='fancycar', password='becauseimbatman') 
cluster = Cluster(
    ['12345.mycompany.net'], 
    port=9042,auth_provider=auth_provider) 
session = cluster.connect('my_keyspace') 

Message d'erreur:

NoHostAvailable: ('Unable to connect to any servers', {'11.111.11.1': AuthenticationFailed('Failed to authenticate to 11.111.11.2: Error from server: code=0100 [Bad credentials] message="Failed to login. Please re-try."',)}) 
+1

essayez de vous connecter à l'aide cassandra même hôte et les informations d'identification de cqlsh pour voir si elle fonctionne ... 'cqlsh 12345.mycompany.net -u fancycar -p becauseimbatman' –

+0

@undefined_variable Merci pour la suggestion. Cela me donne une erreur: '[[email protected] SYST: ~] # cqlsh 12345.monentreprise.net -u fancycar -p becauseimbatman' 'Erreur de connexion: ('Impossible de se connecter à tous les serveurs' , {'11 .111.11.11 ': erreur (Aucun, "Essayé de se connecter à [('11 .111.11.11', 9042)]. Dernière erreur: expiré")}) ' Attendu que la connexion" comme d'habitude "fonctionne: '[[email protected] SYST: ~] # cqlsh -u fancycar -p becauseimbatman ' Connecté à 12345_cluster à 12345.mycompany.net:9042. [cqlsh 5.0.1 | Cassandra 3.0.11.1485 | DSE 5.0.5 | Spécification CQL 3.4.0 | Protocole natif v4] ' – MadsVJ

+1

votre deuxième commande se connecte à localhost lors de la première connexion au serveur distant .. est 12345.mycompany.net résoudre au même hôte que localhost? –

Répondre

2

fixe en utilisant le PlainTextAuthProvider de dse.auth au lieu de Cassandra un ..

from dse.cluster import Cluster 
# pip install dse-driver 
from dse.auth import PlainTextAuthProvider 
auth_provider = PlainTextAuthProvider(
     username='fancycar', password='becauseimbatman ') 
cluster = Cluster(contact_points=['12345.mycompany.net'], 
port=9042, auth_provider=auth_provider) 
session = cluster.connect('batcave') 
print "connected" 
print session.execute("SELECT * FROM robinstears")[0]