我们可以在 Scala 的地图中使用 foreach 吗?

Can we use foreach inside of a map in Scala?

我有一个 RDD[(String, List[String])]

我想为每条记录循环遍历 RDD 中的列表。 可能吗?

RDD has this data
(4,List(5, 6, 7, 1, 3))
(8,List(9, 5, 7))
(5,List(8, 9, 6, 4))
(9,List(5, 10, 8))
(1,List(4, 3))
(6,List(5, 4, 2, 3, 10))
(2,List(3, 6))
(7,List(10, 8, 4))
(3,List(4, 6, 1, 2))
(10,List(6, 7, 9))

我想获得此列表中键的 2-hop 投影。对于值列表中的每个元素,应附加其自己的 RDD 列表。

第一个列表项的结果 RDD 应该是

(4,List((5,List(8, 9, 6, 4)), (6,List(5, 4, 2, 3, 10)), (7,List(10, 8, 4)), (1,List(4, 3)), (3,List(4, 6, 1, 2))))

这里的 (5,List(8, 9, 6, 4) 又取自RDD

所有记录都一样

我可以通过使用嵌套地图来实现这一点。因此我想到发布我的答案。

myRDD.map({case (node,p1Array) => (node, p1Array.map(k => myRDDArray.filter(y=> y._1 == k)(0)))})

结果:

(8,List((9,List(5, 10, 8)), (5,List(8, 9, 4, 6)), (7,List(10, 8, 4))))
(4,List((7,List(10, 8, 4)), (1,List(4, 3)), (3,List(1, 2, 4, 6)), (5,List(8, 9, 4, 6)), (6,List(10, 5, 4, 2, 3))))
(5,List((6,List(10, 5, 4, 2, 3)), (8,List(9, 5, 7)), (9,List(5, 10, 8)), (4,List(7, 1, 3, 5, 6))))
(9,List((5,List(8, 9, 4, 6)), (10,List(6, 7, 9)), (8,List(9, 5, 7))))
(1,List((4,List(7, 1, 3, 5, 6)), (3,List(1, 2, 4, 6))))
(6,List((10,List(6, 7, 9)), (5,List(8, 9, 4, 6)), (4,List(7, 1, 3, 5, 6)), (2,List(3, 6)), (3,List(1, 2, 4, 6))))
(2,List((3,List(1, 2, 4, 6)), (6,List(10, 5, 4, 2, 3))))
(7,List((10,List(6, 7, 9)), (8,List(9, 5, 7)), (4,List(7, 1, 3, 5, 6))))
(3,List((4,List(7, 1, 3, 5, 6)), (6,List(10, 5, 4, 2, 3)), (1,List(4, 3)), (2,List(3, 6))))
(10,List((6,List(10, 5, 4, 2, 3)), (7,List(10, 8, 4)), (9,List(5, 10, 8))))