#scala #apache-spark
#scala #apache-spark
Вопрос:
Я новичок в 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], поскольку я прочитал только первое смежное значение.
Кто-нибудь может мне помочь или предоставить мне некоторые ресурсы?
Ответ №1:
Предполагая, что у вас есть одна запись в строке, например
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))