【问题标题】:Neo4J Batch Inserter is slow with big idsNeo4J 批量插入器在大 ID 时速度很慢
【发布时间】:2015-03-15 22:00:27
【问题描述】:

我正在开发一个 RDF 文件导入器,但我遇到了一个问题,我的数据文件有重复的节点。出于这个原因,我使用大 ID 使用批处理插入器插入节点,但过程很慢。当 Michael 建议使用索引但过程仍然很慢时,我看到了这个 post

另一种选择是合并重复节点,但我认为在 Neo4J 中没有自动选项可以这样做。我错了吗?

谁能帮帮我? :)

谢谢!

【问题讨论】:

  • 请将示例数据连同您用于导入的代码一起发布。

标签: neo4j


【解决方案1】:

CSV 批量导入器中还没有重复处理(计划在下一个版本中使用),因为它非常重要且内存昂贵。

最好在您这边进行重复数据删除。

不要将外部提供的 id 用作节点 id,因为它会从一开始就变大而无法正常工作。使用高效的映射(如 trove)来保持密钥和节点 ID 之间的映射。

我通常使用两次传递和一个数组,然后对数组进行排序,数组索引变为节点 ID,排序后你可以再做一次传递,以消除重复条目

【讨论】:

    【解决方案2】:

    完美 :) 数据将具有以下结构:

    chembl_activity:CHEMBL_ACT_102540 bao:BAO_0000208 bao:BAO_0002146 .

    chembl_document:CHEMBL1129248 cco:hasActivity chembl_activity:CHEMBL_ACT_102551 .

    chembl_activity:CHEMBL_ACT_102540 cco:hasDocument chembl_document:CHEMBL1129248 .

    每一行对应两个节点之间的关系,我们可以看到节点 chembl_activity:CHEMBL_ACT_102540 是重复的。

    我想将节点名称的哈希码另存为 id,但该哈希码是一个非常大的数字,会减慢进程。所以我可以检查 ids 来只创建关系而不是节点。

    谢谢大家! :)

    【讨论】:

      猜你喜欢
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2011-08-07
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多