0

実際にはそれほど大きくない Cassandra のテーブルがあります。わずか 50k 行。このテーブルからすべての行をストリーミングし、Elasticsearch でインデックスを作成する必要があります。

次の方法を使用して、Node.js で簡単なスクリプトを作成しました。

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

そして、dataイベントのリッスンを開始し、1000 行の一括リクエストを作成し、ストリームを一時停止し、行のインデックスを作成し、ストリームの一時停止を解除しました。

これは、1000〜2000行で正常に機能していました。しかし、テーブルのサイズが 50000 行に増えたので、query time out errorCassandra からフェッチしているときに取得します。

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 に答える