我想将数据从一个Cassandra集群(通过192.168.0.200到达)传输到另一个Cassandra集群(通过127.0.0.1到达)。数据是523行,但每一行约1 MB。我使用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
您可能想要增加请求超时(默认:10秒),而不是连接超时。
试题:
cqlsh --request-timeout=6000
或添加:
[connection]
request_timeout = 6000
到~/.cassandra/cqlshrc
文件
关于复制超时,正确的方法是使用已经指出的PAGETIMEOUT参数。
复制用于。
/blockquote>尝试用cqlsh设置——request-timeout=6000在这种情况下没有帮助
我不知道你用的是哪个版本的Cassandra所以我假设是3.0.x
COPY
函数是好的,但并不总是最好的选择(即,如果你有很多数据),然而,对于这个,虽然你可能要检查一些你的超时设置在cassandra
这里的文档也显示了一个页面超时设置,这可能会对您有所帮助。
可以通过许多其他方式在两个集群之间移动数据。您可以使用以下任何一种:
- sstableloader
- 像java驱动程序 一样的驱动程序之一
- 使用spark将数据从一个集群复制到另一个集群,如本例
- 使用OpsCenter克隆集群
- cassandra批量加载器(我知道很多人使用这个)
当然#3和#4需要DSE cassandra,但这只是给你一个想法。我不确定你使用的是Apache Cassandra还是Datastax Enterprise Cassandra。
无论如何,希望这有助于!
嗨,除了下面这些,
1。检查墓碑
在cassandra tombstones中,会降低读取性能,并出现以下问题operationtimeout: errors={'127.0.0.1': '客户端请求超时。看到会话。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 (https://github.com/datastax/spark-cassandra-connector/blob/master/doc/5_saving.md)属性。
您可以使用以下命令
检查表状态Nodetool tablestats keyspace .tablename
2。删除墓碑
如果您在单个节点上工作,则可以通过更改表来删除墓碑修改表keyspace1.tablenameWITH gc_grace_seconds = '0';
3。read_request_timeout_in_ms:在cassandra中配置。Yaml文件增加读请求超时
如果有人需要增加python Cassandra客户端的默认超时:
cas_cluster = Cluster(..)
cas_session = cas_cluster.connect(cas_keyspace)
cas_session.default_timeout = 60 # default is 10 sec.
cas_query_resultset = cas_session.execute("..")