如何从文本文件中读取 RDD[Long, List[Long] ] 中的值


我是Scala

和函数式编程的新手,我正在尝试从文本文件中将无向图读入Scala。文本文件的格式为:

1,8,9,102,5,6,73,1,2

其中表示节点1连接到节点8、9和10(邻接列表(,节点2连接到节点5、6和节点7等等。

我试图将它们解读为RDD[1,包含所有邻接节点的列表]

var graphNodes = sc.textFile(*path to file*).map( line => { val a = line.split(",")
                                                                ( a(0).toLong, a(1).toLong )  }  )

这将给我 RDD[1,8],因为我只读取第一个相邻值。

谁能帮助我或为我提供一些资源?

假设每行有一条记录,例如

sc.parallelize(List("1,8,9,10", "2,5,6,7", "3,1,2"))
  .map(_.split(",").map(_.toLong))
  .map {
    case Array(head, tail @ _*) => (head, tail)
  }.foreach(println)

输出:

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

最新更新