janusgraph - 在实例之间迁移 Janusgraph 中的图
问题描述
我的团队正在研究在Janusgraph
实例之间迁移数据(我们Janusgraph
在 之上Google Cloud BigTable
使用),使用 2 种不同的方法:
- 将图形导出为
graphml
文件,并将其导入另一个实例 - 导出基础
BigTable
表,并将其导入到另一个实例的基础表中
但是,对于每种方法,我们都面临以下问题:
- 我们的图表非常庞大,在导出过程中
java.io.IOException: Connection reset by peer
,即使将 gremlin 服务器超时设置为超过 20 分钟,我们也一直面临着这个问题 - 我们尝试通过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
Parquet
dataflow
格式:这被证明是最有希望的,并且导入工作大部分已完成(除了工人缩减期间看到的错误Root cause: The worker lost contact with the service.
)。重新导入到目标表时,数据通常是完整的。但是,导入后索引似乎“古怪”(例如,当使用has()
索引属性上的过滤器查询特定节点时,查询很快完成,但不返回任何结果)
感谢您对上述问题的任何意见/投入,谢谢!
解决方案
所以这里的问题似乎Dataflow
是每行超过 100k 突变的突变请求失败(由于BigTable
的限制)。然而,谷歌提供的新版ParquetToBigTable 模板似乎有一个名为“splitLargeRows”的新参数,它有助于拆分大行,使突变数保持在 <= 100k。
推荐阅读
- json - 我正在尝试创建一个简单的 api 来接收任何格式的 json 数据,但收到 400 个错误请求。请查看我的代码并更正
- python - 不要将模型保存在重复文件上 - Django 2
- python - 如何正确使用 Keras LSTM batch_input_size
- firebase - firebase_admin generate_reset_password_link 不起作用
- javascript - 如何在javascript中合并和添加内部数字数组?
- amazon-web-services - 如何使用 lambda 将特定列从 csv 复制到红移表中
- android - 将项目与回收视图适配器中的数组列表区分开来
- javascript - 将类属性更改为活动的表单
- java - 如何计算两个字符串Java的相互置信度
- ruby - 查找最长的子串不重复 - 帮助优化代码 [Ruby]