在Spark Scala中形成用于图形处理的元组

时间:2017-10-31 09:52:16

标签: scala apache-spark

我的数据如下

3,3,2
4,1,3
1,1,2
1,3,0
0,6,3
2,2,3
0,2,1
0,5,2

我希望能够构建一个

形式的元组
(2,Long.MAX_VALUE,((3,2)(1,1)(0,5))
(3,Long.MAX_VALUE,((4,1)(0,6)(2,2))
(0,Long.MAX_VALUE,((1,3))
(1,Long.MAX_VALUE,((0,2))

我从文本文件导入数据并使用映射器构成

(3,(2,3))
(4,(3,1))

等等

我尝试使用地图将所有这些转换为表格

(0,Long.MAX_VALUE,(1,3)

然后我使用groupBy(x => (x._1,x._2))但无法形成这些元组。我做错了什么

我正在获取格式

的元组

(0,Long.MAX_VALUE,((0,Long.MAX_VALUE,1,3))

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作以获得预期的输出

   val rdd = sc.textFile("path to your text file")
   val rdd2 = rdd.map(line => line.split(","))
      .groupBy(array => array(2))
      .mapValues(arrays => arrays.map(arr => (arr(0), arr(1))))
      .map(a => (a._1, Long.MaxValue, a._2))

rdd2.foreach(println)应打印

(0,9223372036854775807,List((1,3)))
(2,9223372036854775807,List((3,3), (1,1), (0,5)))
(3,9223372036854775807,List((4,1), (0,6), (2,2)))
(1,9223372036854775807,List((0,2)))

我希望答案很有帮助,你应该对如何进行有一般的了解。 :)