来自单个键的多个键值对,使用 Spark 转换函数的值
Multiple key value pairs from a single key,value using Spark Transformation functions
我有一个格式如下的 RDD:
scala> user_freq_movie
res0: org.apache.spark.rdd.RDD[(Int, List[Int])] = ShuffledRDD[23]
其中一个元素的格式如下:
//(userID,List(freqMovies):
scala> user_freq_movie.first
res1: (Int, List[Int]) = (1,List(102, 101, 98, 100))`
我希望对上面的内容生成一个新的 RDD 转换,以便将键值对作为用户 ID 和对,例如:
1,(102,101)
1,(102,98)
1,(102,98)
1,(101,98)
我目前可以使用组合功能生成所有对,但我错过了它们来自的用户。如何解决火花中的这个挑战?
我正在使用以下转换从 RDD 生成所有对:
val allpairs= user_freq_movie.flatMap(line=>line._2.combinations(2).toSeq)
.map(_.sorted).map(line=>line.toTuple2)
使用flatMapValues
:
user_freq_movie.flatMapValues(line=>line._2.combinations(2))
我有一个格式如下的 RDD:
scala> user_freq_movie
res0: org.apache.spark.rdd.RDD[(Int, List[Int])] = ShuffledRDD[23]
其中一个元素的格式如下:
//(userID,List(freqMovies):
scala> user_freq_movie.first
res1: (Int, List[Int]) = (1,List(102, 101, 98, 100))`
我希望对上面的内容生成一个新的 RDD 转换,以便将键值对作为用户 ID 和对,例如:
1,(102,101)
1,(102,98)
1,(102,98)
1,(101,98)
我目前可以使用组合功能生成所有对,但我错过了它们来自的用户。如何解决火花中的这个挑战? 我正在使用以下转换从 RDD 生成所有对:
val allpairs= user_freq_movie.flatMap(line=>line._2.combinations(2).toSeq)
.map(_.sorted).map(line=>line.toTuple2)
使用flatMapValues
:
user_freq_movie.flatMapValues(line=>line._2.combinations(2))