我刚刚通过docker创建了两个cassandra集群。这个 docker exec -it name nodetool status
命令指示创建的群集一切正常:
然后我将尝试从python驱动程序向表中插入数据。
这是我的密码:
from cassandra.cluster import Cluster
from faker import Faker
import time
fake = Faker()
num = 0
cluster = Cluster(['172.17.0.2', '172.17.0.3'], port=9042)
session = cluster.connect()
session.execute('USE keys')
print("Start create data")
start = time.time()
for i in range(10000):
time.sleep(0.001)
num+=1
session.execute(
"""
INSERT INTO tt (id, title) VALUES (%(id)s, %(title)s)
""",
{'id': num, 'title': fake.address()}
)
end = time.time()
print("Total time: ", end - start)
最后,当我尝试执行代码时,我在终端中给出了以下错误:
1条答案
按热度按时间dwthyt8l1#
您正在从主机连接吗?
在这种情况下,请检查是否已将容器端口9042暴露给本地主机(因为docker容器在与主机不同的网络上运行)。
例如,对于单个节点:
由于您有两个节点在默认情况下都使用容器端口9042,因此您需要将第二个节点的端口9042Map到其他节点,如
两个端口都Map到localhost,在python中设置集群时只需指定一个节点即可,连接只需要一个节点,成功连接后就会发现集群的其余部分: