我是新来的scala/spark,并且在编写spark程序时不确定是否有函数式编程。从成对列表中创建一个三元组列表,其中三元组的所有子集都存在于成对列表中
,我有以下格式的RDD:
//user_freq_pair : (1,List((98,101), (98,100), (98,102), (100,101), (101,102)))
scala> user_freq_pair
res17: org.apache.spark.rdd.RDD[(Int, List[(Int, Int)])]
我想计算从双打,但三元名单三元组的一个新的列表应该有它的所有存在于原始列表的子集,从中我们正在计算。所以我们不能简单地将这个对列表弄平,然后生成所有的三元组。
在上面我们只有从四个可能的三倍以下三重的例子(办法从4选3如果我们拉平我们(1,List(98,100,101,102)
。没有为4种方式):
//user_triple: (1,List((98,100,101)) because (98,101),(98,100),(100,101) all three are present in the original list
scala> user_triple
res18: org.apache.spark.rdd.RDD[(Int, List[(Int, Int,Int)])]
我不确定如何为RDD编写函数并实现上述挑战。
不是列表(98,101,102)也是一个有效的Triplet? –
是的,谢谢指出 –
而不是'List [List [Int]]'如何生成List [(Int,Int,Int)]' –