Parallel collections
Parallel collections offer an extremely easy way to parallelize independent tasks. The reader, being familiar with Scala, will know that many tasks can be phrased as operations on collections, such as map, reduce, filter, or groupBy. Parallel collections are an implementation of Scala collections that parallelize these operations to run over several threads.
Let's start with an example. We want to calculate the frequency of occurrence of each letter in a sentence:
scala> val sentence = "The quick brown fox jumped over the lazy dog" sentence: String = The quick brown fox jumped ...
Let's start by converting our sentence from a string to a vector of characters:
scala> val characters = sentence.toVector Vector[Char] = Vector(T, h, e, , q, u, i, c, k, ...)
We can now convert characters
to a parallel vector, a ParVector
. To do this, we use the par
method:
scala> val charactersPar = characters.par ParVector[Char] = ParVector(T, h, e, , q, u, i...