我正在使用Cassandra java驱动程序从Cassandra表中读取数据。执行查询后,我得到一个java.util.Iterator,我在for循环中读取它。
我想知道是否有可能在并行中并行读取这个迭代器而不是一个项目。
N个流媒体API(FS2?)中的任何一个都可以帮助我吗? (不,我不能在这个时间点使用Spark或Hadoop。)
答案 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