我是Scala和函数式编程的新手,我正尝试从文本文件中将无向图读入Scala。文本文件的格式为:
1,8,9,10 2,5,6,7 3,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]。
有人可以帮助我还是为我提供一些资源?
答案 0 :(得分:2)
假设您每行有一条记录,例如
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))