Cassandra 从CQL导出数据时出现RPC超时错误
我正在尝试使用CQL客户端从cassandra导出数据。一个列族中大约有100000行。当我使用COPY TO命令将dta复制到csv文件中时,会出现以下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超时
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
withLIMIT 9999999
执行相同的操作。因此,当数据增长时,它最终将进入超时状态。这里是导出函数
我也在生产上做同样的出口。我现在做的是:
- 从timeuuid=someTimeuuid limit 10000的表中选择*
- 将结果集写入csv文件w/>模式
- 针对上一个timeuuid进行下一次选择
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]