我想将数据从一个Cassandra集群(通过192.168.0.200实现)传输到另一个Cashandra集群,通过127.0.0.1实现。数据为523行,但每行约为1MB。我正在使用COPY FROM和COPY TO命令。发出COPY TO命令时出现以下错误:
Error for (8948428671687021382, 9075041744804640605):
OperationTimedOut - errors={
'192.168.0.200': 'Client request timeout. See Session.execute[_async](timeout)'},
last_host=192.168.0.200 (will try again later attempt 1 of 5).
我尝试将~/.cassandra/cqlshrc
文件更改为:
[connection]
client_timeout = 5000
但这并没有帮助。
5条答案
按热度按时间mtb9vblg1#
您可能希望增加请求超时(默认值:10秒),而不是连接超时。
尝试:
或添加:
到
~/.cassandra/cqlshrc
文件。rdlzhqv92#
关于复制超时,正确的方法是使用已经指出的PAGETIMEOUT参数。
复制密钥空间。表格设置为'/dev/null',PAGETIMEOUT=10000;
在这种情况下,尝试使用cqlsh设置--request-timeout=6000没有帮助。
yvt65v4c3#
现在还不清楚您在这里使用的是哪种版本的Cassandra,所以我假设是3.0.x
COPY
函数很好,但并不总是最佳选择(例如,如果您有大量数据),但是对于这一点,您可能需要检查cassandra中的一些超时设置这里的文档也显示了页面超时设置,这可能会对您有所帮助。
在两个集群之间移动数据可以通过许多其他方式完成。您可以使用以下任一选项:
1.sstableloader
1.其中一个车手喜欢java driver
1.使用spark将数据从一个集群复制到另一个集群,like in this example
1.使用OpsCenter到clone a cluster
1.cassandra bulk loader(我认识很多人使用它)
当然#3和#4需要DSE cassandra,但这只是给你一个想法。我不确定您是在使用Apache Cassandra还是Datastax Enterprise Cassandra。
无论如何,希望这有帮助!
ffx8fchx4#
嗨,除了以下内容,
1.检查墓碑
在cassandra逻辑删除中,读取性能降低,并出现以下问题OperationTimedOut:errors={'127.0.0.1':'客户端请求超时。请参阅Session.execute_async'},last_host=127..0.0.1
注解
当我们将数据插入到列中包含空值的表中时,它会创建一个逻辑删除。我们需要避免在表中插入null。
spark中有多个可用选项,如unset(https://docs.datastax.com/en/latest-csharp-driver-api/html/T_Cassandra_Unset.htm)和ignoreNulls(d2c1c3d)属性。
可以使用以下命令检查表状态
nodetool tablestats密钥空间1.tablename
2.删除墓碑
如果在单个节点上工作,可以通过更改表ALTER table keyspace1.tablename WITHgc_grace_seconds='0'来删除逻辑删除;
3.read_request_timeout_in_ms:配置cassandra中的值。yaml文件以增加读取请求的超时
7xzttuei5#
如果有人需要增加python Cassandra client中的默认超时: