2016-05-01 22 views
0

私はCassandraに実際にはそれほど大きくないテーブルを持っています。わずか50k行このテーブルからすべての行をストリームし、Elasticsearchでインデックスする必要があります。行と国連のインデックスを作成、ストリームを一時停止し、1000行のバルク要求を作成し、dataイベントを聴き始め、その後Cassandra Node.js:大きなテーブルからすべての行をストリーミング

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

そして:

は、私は次のメソッドを使用して、Node.jsの中で簡単なスクリプトを書きましたストリームを一時停止します。

これは、1000〜2000行で正常に動作していました。しかし、今ではテーブルのサイズが50000行に増えたので、私はquery time out errorを取得し、カサンドラからフェッチします。

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

したがって、プロセスは開始されません。この問題を解決するための推奨方法は何でしょうか?

答えて

0

各行がかなり大きく、Cassandraから大量のデータをストリーミングする必要がある場合は、ページサイズ(fetchSize)を小さくする方が良いです。 options引数には、autoPageとともに、fetchSizeも小さい番号で送信します。たとえば、デフォルトでは

{autoPage: true, fetchSize: 100} 

は、fetchSizeは5000であり、これは私の場合には、すべての問題を引き起こしていたものです。各行には多くのデータが含まれていたため、タイムアウトが発生しました。 fetchSize 100を維持することで問題は解決しました。

関連する問題