Reputation: 41
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
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