首页 > 解决方案 > 在实例之间迁移 Janusgraph 中的图

问题描述

我的团队正在研究在Janusgraph实例之间迁移数据(我们Janusgraph在 之上Google Cloud BigTable使用),使用 2 种不同的方法:

  1. 将图形导出为graphml文件,并将其导入另一个实例
  2. 导出基础BigTable表,并将其导入到另一个实例的基础表中

但是,对于每种方法,我们都面临以下问题:

  1. 我们的图表非常庞大,在导出过程中java.io.IOException: Connection reset by peer,即使将 gremlin 服务器超时设置为超过 20 分钟,我们也一直面临着这个问题
  2. 我们尝试通过3 种不同的格式导出BigTable表格(如此处所建议),但都面临不同的问题: Cloud Dataflow
    • Avro格式:导出avro文件后,将它们重新导入新表时,我们会遇到以下错误:Error message from worker: java.io.IOException: At least 8 errors occurred writing to Bigtable. First 8 errors: Error mutating row ( ;�! with mutations [set cell ....] .... Caused by: java.lang.NullPointerException- 由于Janusgraph将二进制数据存储到BigTable,可能数据流作业无法avro正确导出文件
    • SequenceFile格式:重新导入这些文件时,我们会遇到以下错误:Error message from worker: org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 310 actions: StatusRuntimeException: 310 times, servers with issues: batch-bigtable.googleapis.com
    • Parquetdataflow格式:这被证明是最有希望的,并且导入工作大部分已完成(除了工人缩减期间看到的错误Root cause: The worker lost contact with the service.)。重新导入到目标表时,数据通常是完整的。但是,导入后索引似乎“古怪”(例如,当使用has()索引属性上的过滤器查询特定节点时,查询很快完成,但不返回任何结果)

感谢您对上述问题的任何意见/投入,谢谢!

标签: janusgraphgoogle-cloud-bigtable

解决方案


所以这里的问题似乎Dataflow是每行超过 100k 突变的突变请求失败(由于BigTable的限制)。然而,谷歌提供的新版ParquetToBigTable 模板似乎有一个名为“splitLargeRows”的新参数,它有助于拆分大行,使突变数保持在 <= 100k。


推荐阅读