Шаг addE () еще не реализован в DseGraphFrames, вы должны использовать функцию updateEdges (), специфичную для DGF.Функция предназначена для массовых обновлений. Она использует искровой фрейм данных с новыми ребрами в формате DGF:
scala> newEdges.printSchema
root
|-- src: string (nullable = false)
|-- dst: string (nullable = false)
|-- ~label: string (nullable = true)
столбцы src и dst являются закодированными идентификаторами вершин.Вы можете создать их с помощью вспомогательной функции g.idColumn () или выбрать их из вершин.Обычно вы знаете идентификаторы и используете вспомогательную функцию
scala> val df = Seq((1, 2, "myEdgeLabel")).toDF("v1_id", "v2_id", "~label")
scala> val newEdges=df.select(g.idColumn("vertex2", $"v2_id") as "src", g.idColumn("vertex1", $"v1_id") as "dst", $"~label")
scala> g.updateEdges(newEdges)
. Для вашего конкретного случая вы можете сначала запросить идентификаторы, а затем вставить в них базу.никогда не делайте этого в производстве, такой подход медленный и не массовый.на больших графиках используйте метод № 1:
val dst = g.V.has("vertex1","field1","value").id.first.getString(0)
val src = g.V.has("vertex2","field1","value").id.first.getString(0)
val newEdges = Seq((src, dst, "myEdgeLabel")).toDF("src", "dst", "~label")
g.updateEdges(newEdges)
См. документацию: https://docs.datastax.com/en/dse/5.1/dse-dev/datastax_enterprise/graph/graphAnalytics/dseGraphFrameImport.html