2017-03-09 2 views
0

私はCassandraテーブルからデータを読み込むためにCassandra javaドライバを使用しています。私はクエリを実行した後、私はjava.util.Iteratorを取得し、私はforループでそれを読んでいます。java.util.Iteratorを並列に読み込む

forループで一度に1つの項目ではなく、このイテレータを並列に読むことができるかどうかは疑問です。

N個のストリーミングAPI(FS2?)のどれでもここで助けてもらえますか? (現時点でSparkやHadoopを使用することはできません)

答えて

1

Java 8 Spliteratorを試しましたか?

スプリッターは、ソースの要素をトラバースおよびパーティショニングするオブジェクトです。 Spliteratorによってカバーされる要素のソースは、例えば アレイ、コレクション、IOチャネル、またはジェネレータ関数であってもよい。

これは、パーティションを作成して各パーティションを処理できるので、特定のコレクションを並列化するのに問題がある場合は、

例えば、

Spliterator<CassandraRecord> cassandraRecordsSpliterator = recordsIterator.spliterator(); 

Spliterator<CassandraRecord> eachPartition = cassandraRecordsSpliterator.trySplit(); 

System.out.println(" " + eachPartition.estimateSize()); //will give you x 
System.out.println(" " + cassandraRecordsSpliterator.estimateSize()); // will have N - x 
関連する問題