从对列表创建三元组列表,以便所有三元组子集都存在于对列表中

普拉提克·阿格拉瓦尔

我是 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)])]

我想从双打中计算出一个新的三联列表,但是三联列表中应该包含所有子集,而这些子集都存在于我们要计算的原始列表中。所以我们不能简单地将配对列表展平,然后生成所有三元组。

在上面的例子中,我们将只有四个可能的三元组中的以下三元组(如果我们扁平化,我们有(1,List(98,100,101,102).No. 从 4 中选择 3 的方法是 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 编写函数并实现上述挑战。

流氓一号

以下函数将识别符合您的条件的候选三元组。

def generateTriplets(input: List[(Int,Int)]) = {
    val combinations = input.flatMap({case (x,y) => List(x,y)}).toSet.toList.combinations(3).toList
    combinations collect { 
          case a::b::c::Nil if 
               (input.contains((a,b)) || input.contains((b,a))) &&
               (input.contains((b,c)) || input.contains((c,b))) &&
               (input.contains((a,c)) || input.contains((c,a))) => (a,b,c)

    }   
}

样本输入

scala> generateTriplets(List((98,101), (98,100), (98,102), (100,101), (101,102)))
res37: List[List[Int]] = List(List(98, 101, 100), List(98, 101, 102))

然后,您可以在 RDD 中映射此函数以获得所需的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从列表中删除相邻号码的三元组

来自分类Dev

将三元组的三元组列表转换成字典

来自分类Dev

从保存在2D列表中的三元组单词构造文本

来自分类Dev

如何从SCALA中的三元组列表中创建多图?

来自分类Dev

使用无限性列表在Haskell中的勾股三元组

来自分类Dev

将列表数组转换为元组/三元组数组

来自分类Dev

三元组的组的列表到地图一对键

来自分类Dev

如何删除三元组列表中每个元组的第二个元素?

来自分类Dev

如何编写一个接受一个数字并返回一个三元组列表的函数“三元组”?

来自分类Dev

将列表转换为字符串三元组序列

来自分类Dev

分离/访问像[[[[x,y],z],p]这样的三元组列表?

来自分类Dev

将python字典转换为三元组列表时出现问题?

来自分类Dev

RDF重复三元组

来自分类Dev

三元组的最佳合并

来自分类Dev

编号三元组

来自分类Dev

三元组的稀疏矩阵

来自分类Dev

编号三元组

来自分类Dev

处理三元组的重复

来自分类Dev

如何从MySql创建三元组

来自分类Dev

如何区分SQL三元组与显式三元组?

来自分类Dev

验证JSON-LD中的三元组

来自分类Dev

验证JSON-LD中的三元组

来自分类Dev

目标架构三元组中“ pc”的含义

来自分类Dev

查找一个numpy数组的所有n-let(对,三元组,四元组等)

来自分类Dev

如何在满足给定条件的榆树中创建一组三元组?

来自分类Dev

如何在满足给定条件的榆树中创建一组三元组?

来自分类Dev

使用LINQ获取所有可能的不同三元组

来自分类Dev

生成三元组中所有可能的数字组合?

来自分类Dev

在数组中查找总和为给定值的所有三元组。数组中有重复项

Related 相关文章

热门标签

归档