【问题标题】:How do i use GraphSON v2 instead of v3?如何使用 GraphSON v2 而不是 v3?
【发布时间】:2020-06-27 13:28:43
【问题描述】:

我正在尝试在 python 中运行一段代码,它使用来自 Microsoft Azure 的 Cosmos DB。我目前正在使用 gremlinpython 3.2.6 和最新版本的 Cosmos(默认在 microsoft azure 上),但两者之间似乎存在一些兼容性问题。

当我运行我的代码时,我得到以下错误;

GremlinServerError: 498: 

ActivityId : 5c05bb15-3aa1-41b8-9c10-ab3015152eab
ExceptionType : GraphMalformedException
ExceptionMessage :
    Gremlin Malformed Request: GraphSON v3 IO is not supported.
    GremlinRequestId : 5c05bb15-3aa1-41b8-9c10-ab3015152eab
    Context : global
    GraphInterOpStatusCode : MalformedRequest
    HResult : 0x80131500

我读到我应该尝试使用 GraphSON v2 而不是 V3,但不知道如何,有人可以帮忙吗?

【问题讨论】:

    标签: python azure azure-cosmosdb graphson


    【解决方案1】:

    您需要将版本降级到支持的连接器版本。这适用于所有编程语言。对于撰写本文时的 python,它是 3.2.7。

    【讨论】:

      【解决方案2】:

      使用 C#,如果您将连接配置放在 Startup.cs 中,您可以像这样配置它:

      services.AddSingleton<GremlinClient>(
                  (serviceProvider) =>
                  {
                      var gremlinServer = new GremlinServer(
                          hostname: "<account>.gremlin.cosmosdb.azure.com",
                          port: <port>,
                          enableSsl: true,
                          username: "/dbs/<db>/colls/<collection>",
                          password: ""
                          );
                      var connectionPoolSettings = new ConnectionPoolSettings
                      {
                          MaxInProcessPerConnection = 32,
                          PoolSize = 4,
                          ReconnectionAttempts = 3,
                          ReconnectionBaseDelay = TimeSpan.FromSeconds(1),
                      };
                      var mimeType = "application/vnd.gremlin-v2.0+json";
                      return new GremlinClient
                      (
                          gremlinServer: gremlinServer,
                          graphSONReader: new GraphSON2Reader(),
                          graphSONWriter: new GraphSON2Writer(),
                          mimeType: mimeType,
                          connectionPoolSettings: connectionPoolSettings
                      );
                  }
              );
      

      否则,您应该使用以下 reader、writer 和 mimeType 创建 gremlin 客户端:

      var mimeType = "application/vnd.gremlin-v2.0+json";
      var client = new GremlinClient
      (
            gremlinServer: <your server>,
            graphSONReader: new GraphSON2Reader(),
            graphSONWriter: new GraphSON2Writer(),
            mimeType: mimeType,
            connectionPoolSettings: <your connection pool>
       );
      

      【讨论】:

        【解决方案3】:

        创建客户端时提供mime类型

        var client = new GremlinClient(gremlinServer:gremlinServer,mimeType:GremlinClient.GraphSON2MimeType)
        

        【讨论】:

          【解决方案4】:

          默认情况下 gremlin_python 使用GraphSONSerializersV3d0,因此您必须在创建客户端时显式传递GraphSONSerializersV2d0

          from gremlin_python.driver import client, serializer
          
          client.Client(
              message_serializer=serializer.GraphSONSerializersV2d0(),
              password="...",
              traversal_source='g',
              url='wss://...:443/',
              username="/dbs/.../colls/...",
          )
          

          【讨论】:

            【解决方案5】:

            欢迎来到这个社区。您只需确保使用 GraphSON v2 的架构,因为它是 Azure Cosmos DB 中支持的版本。检查您正在使用的 json 并确保遵循支持的架构。 this link 中有一些示例。

            【讨论】:

            • 谢谢你,我还有一个问题。创建新图时,出现以下错误:Gremlin Query Execution Error: Cannot add a vertex where the partition key property has value 'null' 我以前的图具有以下分区键:/_partitionKey 但这个键似乎不适用于新图?
            • 添加 Vertex 时需要指定分区键 - 已报告并解释了问题here
            • 这没有帮助 - 你如何设置它以确保你使用 GraphSON v2 使用 gremlin-python?该链接中没有任何内容可以解释它。
            • 尽管这是公认的答案,但对我没有帮助。我设法弄清楚如何使用GraphSON v2,请看我的回答:stackoverflow.com/a/63362061/1896523
            猜你喜欢
            • 2013-04-03
            • 2011-09-20
            • 1970-01-01
            • 2019-02-05
            • 1970-01-01
            • 2020-04-04
            • 1970-01-01
            • 1970-01-01
            • 2013-02-20
            相关资源
            最近更新 更多