【发布时间】:2016-02-15 21:05:54
【问题描述】:
我有这种格式的数据:
100 1 2 3 4 5
我使用下面的代码来加载它:
val data : RDD[(String, Array[Int])] = sc.textFile("data.txt").map(line => ((line.split("\t"))(0), (line.split("\t"))(1).split(" ").map(_.toInt)))
我想从 Array[Int] 生成对,使得值大于数字(以下代码中为 2)的数组元素与数组的所有其他元素配对。然后,我将使用它来生成更多统计信息。例如,使用示例数据,我应该能够首先生成:
100 (3,1), (3,2), (3,4), (3,5),(4,1), (4,2), (4,3), (4,5 )
val test = merged_data.mapValues { case x =>
for (element <- x) {
val y = x.filter(_ != element)
if (element > 2)
{
for (yelement <- y)
{
(element, yelement)
}
}
}
}
这是我得到的 o/p: Array[(String, Unit)] = Array((100,())) 不知道为什么它是空的。
一旦我能够解决这个问题,我将对元组中的元素进行排序并删除重复项(如果有的话) 上面的o/p
100 (3,1), (3,2), (3,4), (3,5),(4,1), (4,2), (4,3), (4,5 )
变成这样:
100 (1,3), (2,3), (3,4), (3,5), (1,4), (2,4), (4,5)
【问题讨论】:
标签: scala apache-spark