Использование Spark для добавления Edges gremlin

Я не могу сохранить край, когда использую искру следующим образом: для информации, он может сохранить край, используя консоль gremlin

val graph = DseGraphFrameBuilder.dseGraph("GRAPH_NAME", spark)
graph.V().has("vertex1","field1","value").as("a").V().has("vertex2","field1","value").addE("myEdgeLabel").to("a")

Когда я пытаюсь: graph.edges.show() У меня пустая таблица


person BeginMoh    schedule 22.11.2018    source источник


Ответы (1)


Шаг 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.

person Artem Aliev    schedule 01.02.2019
comment
спасибо Артем, это именно то, что я сделал, чтобы решить свою проблему - person BeginMoh; 01.02.2019
comment
не могли бы вы взглянуть на это: stackoverflow .com / questions / 54477706 /, если вы знаете об этой проблеме. - person BeginMoh; 01.02.2019