Cassandra Node.js:从大表中流式传输所有行

时间:2016-05-01 19:09:18

标签: cassandra cassandra-node-driver

我在Cassandra有一张桌子,实际上并不是很大。只有50k行。我需要从此表中流式传输所有行,并在Elasticsearch中对它们进行索引。

我使用以下方法在Node.js中编写了一个简单的脚本:

var myStream = CassandraService.cassandra_client.stream("select * from my_table");

然后开始侦听data个事件,创建1000行的批量请求,暂停流,索引行并取消暂停流。

这适用于1000-2000行。但是现在因为表格大小已经增加到50000行,所以我从Cassandra获取query time out error

Unhandled rejection ResponseError: Operation timed out - received only 0 responses.

所以这个过程甚至都没有开始。什么是解决这个问题的推荐方法?

1 个答案:

答案 0 :(得分:0)

如果每行都很大并且您需要从Cassandra流式传输大量数据,则最好减小页面大小(fetchSize)。在options参数中,与autoPage一起,还会使用较小的数字发送fetchSize。例如

{autoPage: true, fetchSize: 100}

默认情况下,fetchSize为5000,这就是导致我的所有问题的原因。由于每行包含大量数据,因此导致超时。保持fetchSize 100解决了这个问题。