Scala 为数组的每个键传递函数
我有一个这样的数组:Scala 为数组的每个键传递函数,scala,apache-spark,scala-collections,spark-graphx,Scala,Apache Spark,Scala Collections,Spark Graphx,我有一个这样的数组: val pairs: Array[(Int, ((VertexId, Seq[Int]), Int))] 这将生成以下输出: (11,((11,ArraySeq(2, 5, 4, 5)),1)) (11,((12,ArraySeq(7, 7, 8, 2)),1)) (11,((13,ArraySeq(5, 9, 8, 7)),1)) (1,((1,ArraySeq(1, 2, 3, 4)),1)) (1,((4,ArraySeq(1, 5, 1, 1)),1)) 我想
val pairs: Array[(Int, ((VertexId, Seq[Int]), Int))]
这将生成以下输出:
(11,((11,ArraySeq(2, 5, 4, 5)),1))
(11,((12,ArraySeq(7, 7, 8, 2)),1))
(11,((13,ArraySeq(5, 9, 8, 7)),1))
(1,((1,ArraySeq(1, 2, 3, 4)),1))
(1,((4,ArraySeq(1, 5, 1, 1)),1))
我想为每个对建立一个图表。\u 1
。这意味着,例如,那些具有相同id(pairs.\u 1)的人将一起构建一个图。
我正在考虑向每个id传递一个图形构造函数。
我如何才能做到这一点?您正在寻找处理每个组的函数
pairs groupBy {_._1} mapValues { groupOfPairs => doSomething(groupOfPairs) }
“为每对传递一个函数”是什么意思?请提供输入和所需输出的示例。@dcastro我刚刚更正了我的帖子。你能看一下吗?谢谢。你已经有了构建图表的功能了吗?你试过什么?你知道groupBy的事吗?@BenReich是的,我有这个功能。我将两个RDD连接在一起(顶点),并在它们之间构造一条边
groupBy
只执行我所知道的数组类型。谢谢您的回答。但我并不总是有11和1。我必须提出一个一般性的理由!这个数字(11、1等)如何影响接下来发生的事情?这有关系吗?这个数字是随机给出的,所以每次执行时我都会有两到三个不同的数字。具有相同编号的节点将在图形构造函数中处理。@OmarMasmoudi能否更新您的问题,并解释您希望为每对/每组对调用什么函数?现在还不清楚你想在这里做什么。另外,我可以不使用函数创建两个节点(只有一条边)的图吗?这意味着,每两个节点都有相同的编号,这两个节点将分别构建一个图。