0

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

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

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

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

这适用于 1000-2000 行。但是现在由于表大小已经增长到 50000 行,我query time out error在从 Cassandra 获取时得到了。

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

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

4

1 回答 1

0

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

{autoPage: true, fetchSize: 100}

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

于 2016-05-03T09:19:53.577 回答