Spark」カテゴリーアーカイブ

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)
フラットになってる。

Spark ScalaでsortByKeyを降順にする

SparkでreduceByKeyしたあとにsortByKeyで降順にソートしたかったのでメモ

sortByKey()の引数にfalseを渡す。

val totalByItem = rdd.reduceByKey((x, y) =>  (x + y)) //要素毎にカウントして (要素, 個数)のtupleにする
val flipped = totalByItem.map(x => (x._2, x._1)) // tupleの要素と個数を入れ替えて(個数、 要素)にする
val sorted = flipped.sortByKey(false) // 降順でソート