В следующем коде даны данные, имеющие три значения в каждом столбце, как показано ниже.Суммировать расстояние в информационных фреймах Apache-Spark
import org.graphframes._
import org.apache.spark.sql.DataFrame
val v = sqlContext.createDataFrame(List(
("1", "Al"),
("2", "B"),
("3", "C"),
("4", "D"),
("5", "E")
)).toDF("id", "name")
val e = sqlContext.createDataFrame(List(
("1", "3", 5),
("1", "2", 8),
("2", "3", 6),
("2", "4", 7),
("2", "1", 8),
("3", "1", 5),
("3", "2", 6),
("4", "2", 7),
("4", "5", 8),
("5", "4", 8)
)).toDF("src", "dst", "property")
val g = GraphFrame(v, e)
val paths: DataFrame = g.bfs.fromExpr("id = '1'").toExpr("id = '5'").run()
paths.show()
val df=paths
df.select(df.columns.filter(_.startsWith("e")).map(df(_)) : _*).show
Выходной сигнал выше код приведен ниже ::
+-------+-------+-------+
| e0| e1| e2|
+-------+-------+-------+
|[1,2,8]|[2,4,7]|[4,5,8]|
+-------+-------+-------+
В выводе выше, мы можем видеть, что каждый столбец имеет три значения, и их можно интерпретировать следующим образом.
e0 :
source 1, Destination 2 and distance 8
e1:
source 2, Destination 4 and distance 7
e2:
source 4, Destination 5 and distance 8
e0
в основном, e1
и e3
являются края. Я хочу суммировать третий элемент каждого столбца, т. Е. Добавить расстояние каждого края, чтобы получить общее расстояние. Как я могу это достичь?
ли '.property' предназначены для быть общим заполнителем для элемента столбца, к которому вы пытаетесь получить доступ? –
@ evan058 Столбцы OP пытается получить доступ к краям графт-рам. Они представлены как структуры с тремя полями ('src',' dst', 'property'). Так что это элемент столбца. –