Spark ScalaのmapとflatMapの動作

Spark始めた初期につまづいたのでメモ。
結果の違いで覚えた。

まずはRDDを作る。

val seq = Seq("Some People Feel the Rain", "Others Just Get Wet")
val rdd = sc.parallelize(seq)

このRDDに対してmap

rdd.map(x => x.split(" ")).collect

結果はこれ
Array[Array[String]] = Array(Array(Some, People, Feel, the, Rain), Array(Others, Just, Get, Wet))
入れ子になってる。

さっきのRDDに対してflatMap

rdd.flatMap(x => x.split(" ")).collect

結果はこれ
Array[String] = Array(Some, People, Feel, the, Rain, Others, Just, Get, Wet)
フラットになってる。