Neo4j 导入工具 - 控制台输出含义

Neo4j Import tool - Console output meaning

Neo4j import 工具的控制台输出是什么意思?

示例行:

[INPUT--------------PROPERTIES(2)======|WRITER: W:71.] 3M

[INPUT------|PREPARE(|RELATIO||] 49M

[Relationship --> Relationship + counts-------]282M

当我尝试通过此工具导入大型数据集时,似乎在 248M 处,导入挂在“计算密集节点”步骤。 'calculating dense nodes' 到底是做什么的?

经过一些离线讨论,似乎大多数(如果不是全部)"missing" 节点是由于 CSV 文件中的一行 属性 以引号 " 开头,但是不包含结束引号。这导致解析器读取到下一个引用,即通过换行,认为它仍然读取该节点的相同 属性 值。

对此类缺失的引号进行某种检测会很棒,但这并不是直截了当的,因为它可能会混淆 nodes/relationships 实际上跨越多行。

导入阶段是:

  1. 节点
  2. 准备节点索引
  3. 计算密集节点
  4. 节点 --> 关系稀疏
  5. 关系 --> 关系稀疏
  6. 节点数
  7. 关系很重要

至于解释统计数据,我猜是 @mattias-persson 写的 in the Neo4J manual。复制它,以备记录:

10.1.2.5。输出和统计

虽然导入 运行 经历了不同的阶段,但控制台中会打印一些统计数据和数字。对该输出的一般解释是查看水平线,它被分成几个部分,每个部分代表一种与其他部分并行进行的工作类型。一个部分越宽,相对于其他部分花费的时间越多,最宽的部分是瓶颈,也用 * 标记。如果一个部分有双线,而不是单线,则意味着多个线程正在执行该部分中的工作。最右边显示一个数字,表示该阶段已处理了多少实体(节点或关系)。

举个例子:

[*>:20,25 MB/s-----------|PREPARE(3)==========|RELATIONSHIP(2)===========] 16M

将被解释为:

  • > 在 20,25 MB/s 处读取并可能解析的数据,正在传递给 ...
  • 的数据
  • PREPARE 为……准备数据
  • RELATIONSHIP 创建实际关系记录并……
  • v 将关系写入商店。此示例中看不到此步骤,因为与其他部分相比它非常便宜。

观察部分大小可以提示可以改进性能的地方。在上面的示例中,瓶颈是数据读取部分(标记为 >),这可能表明磁盘速度很慢,或者处理同时读写操作不佳(因为最后一部分通常围绕写入磁盘)。