Python cassandra驱动程序:协议版本无效或不受支持:4

时间:2015-07-16 01:49:40

标签: python amazon-web-services cassandra

我收到以下错误:

   File "clear-domain-cass.py", line 25, in <module>
    session = cluster.connect('my_domain')
  File "/usr/lib/python2.6/dist-packages/cassandra/cluster.py", line 839, in connect
    self.control_connection.connect()
  File "/usr/lib/python2.6/dist-packages/cassandra/cluster.py", line 2075, in connect
    self._set_new_connection(self._reconnect_internal())
  File "/usr/lib/python2.6/dist-packages/cassandra/cluster.py", line 2110, in _reconnect_internal
    raise NoHostAvailable("Unable to connect to any servers", errors)
cassandra.cluster.NoHostAvailable: ('Unable to connect to any servers', {'10.1.0.89': ConnectionException(u'Failed to initialize new connection to 10.1.0.89: code=0000 [Server error] message="io.netty.handler.codec.DecoderException: org.apache.cassandra.transport.ProtocolException: Invalid or unsupported protocol version: 4"',)})

这是脚本的相关部分:

from cassandra.cluster import Cluster
from cassandra.query import BatchStatement

startTime = time.time()

if len(sys.argv) < 2:
  print "Target host IP is required arg for this script. A comma-sep. list will work also"
  exit()

if len(sys.argv) < 3:
  print "Target domain is required arg for this script."
  exit()

hostIp = sys.argv[1]
domain = str(sys.argv[2])

cluster = Cluster(
  contact_points=[hostIp],
)
session = cluster.connect('my_domain')

在cluster.connect行上失败。

我按照以下步骤将pip安装到此Amazon EC2实例中:http://bcjordan.com/pip-on-amazon-ec2/

1 个答案:

答案 0 :(得分:13)

您正在使用的python驱动程序版本默认尝试使用v4本机协议,但Cassandra 2.1仅支持协议版本3及更低版本。要告诉驱动程序使用v3协议,请执行以下操作:

cluster = Cluster(contact_points=[hostIp], protocol_version=3)

(顺便说一句,由于CASSANDRA-9451),Cassandra 2.1.6+中的错误信息应该得到改善。