并行阅读java.util.Iterator

时间:2017-03-09 20:49:01

标签: scala cassandra

我正在使用Cassandra java驱动程序从Cassandra表中读取数据。执行查询后,我得到一个java.util.Iterator,我在for循环中读取它。

我想知道是否有可能在并行中并行读取这个迭代器而不是一个项目。

N个流媒体API(FS2?)中的任何一个都可以帮助我吗? (不,我不能在这个时间点使用Spark或Hadoop。)

1 个答案:

答案 0 :(得分:1)

您是否尝试过Java 8 Spliterator

  

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