Неподдерживаемый тип значения свойства: java.util.LinkedHashMap при записи в Нептун - PullRequest
0 голосов
/ 12 июня 2019

Я использую Gremlin-scala 3.4.1.5 против Нептуна, и я не могу добавить вершину, используя класс case со списком или множеством, подобным образом. Добавление вершины, кажется, работает, когда этого не существует

//connection
Cluster.build()
      .addContactPoint(endpoint)
      .serializer(new GraphSONMessageSerializerV3d0())
      .port(port)
      .create()

val g = EmptyGraph.instance.asScala().configure(_.withRemote(DriverRemoteConnection.using(cluster)))

// adding vertex

case class Person(name: String, friends: Seq[String])
case class Person(name: String, friends: Set[String]) // also does not work
g + Person

Трассировка стека

org.apache.tinkerpop.gremlin.driver.exception.ResponseException: {"requestId":-087f-4868-b4b7-","code":"UnsupportedOperationException","detailedMessage":"Unsupported property value type: java.util.LinkedHashMap"}
java.util.concurrent.CompletionException: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: {"requestId":"-087f-4868-b4b7-","code":"UnsupportedOperationException","detailedMessage":"Unsupported property value type: java.util.LinkedHashMap"}
    at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:375)
    at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:1934)
    at org.apache.tinkerpop.gremlin.driver.ResultSet.one(ResultSet.java:119)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.hasNext(ResultSet.java:171)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:178)
    at org.apache.tinkerpop.gremlin.driver.ResultSet$1.next(ResultSet.java:165)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:140)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal$TraverserIterator.next(DriverRemoteTraversal.java:125)
    at org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteTraversal.nextTraverser(DriverRemoteTraversal.java:106)

Ответы [ 3 ]

0 голосов
/ 18 июня 2019

Я полагаю, что Neptune может не поддерживать свойства списка в вершинах в соответствии с этой документацией: https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differences.html

Чтобы проверить это, вы можете попробовать запустить тот же код на gremlin-сервере или в другой реализации

0 голосов
/ 27 июня 2019

Нептун не поддерживает Список как тип свойства [1].Если требуется упорядоченный список, один из способов сделать это состоит в том, чтобы сериализовать его в одно свойство (например, строку списка json).Для правильного чтения нужно немного логики на уровне приложений.Другим распространенным способом создания списков является моделирование элемента списка как отдельной вершины и моделирование их как ребер на графе.

Например: вместо того, чтобы иметь свойство для списка адресов, сделайте Address меткой вершины и сделайте ребра от вашего Person до Address1 по Address2.Этот вариант лучше, если вы ожидаете мутации в своем списке.

https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-gremlin-differences.html

Обновление

Принятие этого как ответа, потому что это то, что я в конечном итоге использовал.Я просто хотел бы уточнить некоторые вещи.

Neptune поддерживает свойства Single и Set cardinality при использовании шага свойства Gremlin () и т. Д.

Я открыл проблемув Gremlin-scala , потому что я считаю, что собственные мощности TinkerPop должны поддерживаться для List и Set.List потерпит неудачу в Нептуне сегодня, но это нормально, потому что пользователь может переключиться на Set, если это сработало для их варианта использования, и это сработало бы.

0 голосов
/ 16 июня 2019

Re Unsupported property value type: java.util.LinkedHashMap

У меня нет рабочей настройки Нептуна, но простая скала List может работать. Если нет, вот соответствующие разделы в макросе:

https://github.com/mpollmeier/gremlin-scala/blob/2e32ae0/macros/src/main/scala/gremlin/scala/Marshallable.scala#L178-L179

https://github.com/mpollmeier/gremlin-scala/blob/2e32ae0/macros/src/main/scala/gremlin/scala/Marshallable.scala#L110-L120

...