Cassandra 从CQL导出数据时出现RPC超时错误

Cassandra 从CQL导出数据时出现RPC超时错误,cassandra,cql3,Cassandra,Cql3,我正在尝试使用CQL客户端从cassandra导出数据。一个列族中大约有100000行。当我使用COPY TO命令将dta复制到csv文件中时,会出现以下rpc_超时错误 copy mycolfamily to '/root/mycolfamily.csv' Request did not complete within rpc_timeout. 我正在跑步: [cqlsh 3.1.6 | Cassandra 1.2.8 | CQL规范3.0.0 |节俭协议19.36.0] 如何增加RPC超时

我正在尝试使用CQL客户端从cassandra导出数据。一个列族中大约有100000行。当我使用COPY TO命令将dta复制到csv文件中时,会出现以下rpc_超时错误

copy mycolfamily to '/root/mycolfamily.csv'
Request did not complete within rpc_timeout.
我正在跑步:

[cqlsh 3.1.6 | Cassandra 1.2.8 | CQL规范3.0.0 |节俭协议19.36.0]

如何增加RPC超时限制

我尝试在我的
conf/cassandra.yaml
文件中添加
rpc\u timeout\u in_ms:20000
(defalut是10000)。但重新启动cassandra时,我得到:

[root@user ~]# null; Can't construct a java object for tag:yaml.org,2002:org.apache.cassandra.config.Config; exception=Cannot create property=rpc_timeout_in_ms for JavaBean=org.apache.cassandra.config.Config@71bfc4fc; Unable to find property 'rpc_timeout_in_ms' on class: org.apache.cassandra.config.Config
Invalid yaml; unable to start server.  See log for stacktrace.

COPY
命令当前对
SELECT
with
LIMIT 9999999
执行相同的操作。因此,当数据增长时,它最终将进入超时状态。这里是导出函数

我也在生产上做同样的出口。我现在做的是:

  • 从timeuuid=someTimeuuid limit 10000的表中选择*
  • 将结果集写入csv文件w/>模式
  • 针对上一个timeuuid进行下一次选择
您可以通过以下cqlsh命令在cqlsh中使用管道命令


echo“{$cql}”|/usr/bin/cqlsh-u user-p password localhost 9160>file.csv

您可以通过在Datastax Java驱动程序中指定获取大小来使用自动分页

Statement stmt = new SimpleStatement("SELECT id FROM mycolfamily;"); 
stmt.setFetchSize(500); 
session.execute(stmt); 
for (Row r:result.all()){
    //write to file
}

几分钟前,我遇到了同样的问题,然后我找到了捕获,它成功了:

首先在cqlsh上开始捕获,然后根据您的选择限制运行查询


导出数据的最佳方法是使用nodetool快照选项。这会立即返回,稍后可以恢复。唯一的问题是,此导出是针对每个节点和整个集群的

例如: nodetool-h localhost-p 7199快照

见参考资料:

任何帮助。我知道时间太短了,不能指望在一小时内得到答复。。但对我来说,继续做下去是非常重要的。ThanksIt意味着,即使您提高了rpc超时,copy命令最终也会进入超时状态。所以,你应该用限制10000进行选择,写入一个csv文件,然后选择下一个10000,等等。我得到了逻辑。您能告诉我如何将select语句的输出写入文件吗。。我知道这很愚蠢wish@venuktan我没有检查它是否有效,但它应该有效。只是别忘了添加
“{$cql}”
来逃避cqlm我的问题是,blob数据将如何存储?COPY cmd以文本格式存储数据。我不确定,但我记得如果导出blob,它将导出为[0-1]