Linna
Linna

Reputation: 41

Scala RDD reverse key value pair

I've got a RDD key value pair in structure as bellow :

scala> val rateMovieByYear = maxRateByYearRDD.join(rateMovie)
rateMovieByYear: org.apache.spark.rdd.RDD[(Double, (String, String))] = MapPartitionsRDD[33] at join at <console>:27

scala> rateMovieByYear.take(5).foreach(println)
(14.0009,(2001,Tortilla Soup))
(5.1258,(1955,Lady and the Tramp))
(12.5,(2013,Chi bi xia: Jue zhan tian xia))
(12.5,(2013,Dante's Inferno: Documentary))
(12.5,(2013,José Rizal))

I'd like to reverse one value as the key and the key in the list value Ex: (Tortilla Soup,(14,0009,2001))

Thank you for helping

Upvotes: 1

Views: 85

Answers (1)

Linna
Linna

Reputation: 41

I'm incrementally convinced by the power of spark RDD

scala> rateMovieByYear.map{ case (k, (v1, v2)) => (v2, (k, v1)) }
res0: org.apache.spark.rdd.RDD[(String, (Double, String))] = MapPartitionsRDD[10] at map at <console>:26

scala>

scala> val rateMovieByYearRDD = rateMovieByYear.map{ case (k, (v1, v2)) => (v2, (k, v1)) }
rateMovieByYearRDD: org.apache.spark.rdd.RDD[(String, (Double, String))] = MapPartitionsRDD[11] at map at <console>:25

scala>

scala> rateMovieByYearRDD.take(5).foreach(println)
(Tortilla Soup,(14.0009,2001))
(Lady and the Tramp,(5.1258,1955))
(Chi bi xia: Jue zhan tian xia,(12.5,2013))
(Dante's Inferno: Documentary,(12.5,2013))
(José Rizal,(12.5,2013))

Upvotes: 1

Related Questions