日志

GDS 库中有三种类型的日志:调试日志、进度日志以及提示或警告日志。

调试日志提供有关系统中事件的信息。例如,当算法计算完成时,可能会记录所使用的内存量和总运行时间。当操作无法正常完成的异常事件也会被记录下来。调试日志信息对于理解系统中的事件非常有用,特别是在排查问题时。

进度日志用于跟踪预期耗时较长的操作进度。这包括图投影、算法计算和结果写入。

提示或警告日志向用户提供与查询相关的有用提示或警告。

所有日志条目都会写入为 Neo4j 数据库配置的日志文件中。有关配置 Neo4j 日志的更多信息,请参阅 Neo4j 操作手册。

进度日志程序

GDS 库本身也会跟踪进度。除了查看日志文件外,这还可以通过 Cypher 检查进度。要访问当前运行任务(也称为作业)的进度信息,我们可以使用进度列表程序:gds.listProgress。GDS 库中的任务定义为正在运行的程序,例如算法或图加载程序。

进度列表程序有两种模式,具体取决于是否设置了 jobId 参数:首先,如果未设置 jobId,该程序将为每个当前正在运行的任务生成一行。这可以看作是这些任务的摘要,例如显示特定任务的整体进度。其次,如果设置了 jobId 参数,它将显示给定运行作业的详细视图。详细视图将为该作业在执行过程中执行的每个步骤或任务生成一行。它还将显示任务如何以树状结构组织,并打印每个单独任务的进度。

对于拥有管理员权限的用户,此程序将列出所有用户的运行任务。

语法

获取任务进度
CALL gds.listProgress(jobId: String, showCompleted: Boolean)
YIELD
  username,
  jobId,
  taskName,
  progress,
  progressBar,
  status,
  timeStarted,
  elapsedTime
表 1. 参数
名称 类型 默认 可选 描述

jobId

字符串

""

是

运行任务的 jobId。这将触发该特定任务的详细概览。

showCompleted

布尔值

false

是

如果为 false,则仅列出挂起和运行中的任务。如果为 true,则列出所有任务,包括已完成、失败和中止的任务。如果提供了 jobId,此参数仅影响根任务。

表 2. 结果
名称 类型 描述

username

字符串

启动运行任务的用户。

jobId

字符串

生成的运行任务标识符。

taskName

字符串

运行任务的名称,例如 Node2Vec。

progress

字符串

作业的进度,以百分比值显示。

progressBar

字符串

作业的进度,以 ASCII 进度条显示。

状态 (status)

字符串

作业的当前状态,例如 RUNNING 或 CANCELED。

timeStarted

LocalTime

任务开始时的本地挂钟时间。

elapsedTime

Duration

从 timeStarted 到现在持续的时间。

某些通常需要一段时间才能完成的作业(如图投影和运行算法)在其配置参数映射中接受一个可选的 jobId。这可以使跟踪它们变得更容易,因为它们随后会列在 gds.listProgress 结果中提供的 jobId 下。对于算法,请参阅 jobId 参数文档以了解更多信息。

示例

假设我们刚刚启动了 gds.node2vec.stream 程序。

CALL gds.listProgress()
YIELD
  jobId,
  taskName,
  progress
表 3. 结果
jobId taskName progress

"d21bb4ca-e1e9-4a31-a487-42ac8c9c1a0d"

"Node2Vec"

"42%"

用户日志

提示和警告也可以通过 GDS 库进行跟踪,并可通过 Cypher 查询访问。GDS 库会为每个用户跟踪其生成提示或警告的最近 100 个任务,并将它们存储在内存中。当用户调用 gds.userLog 程序时,将返回其各自生成的提示和警告列表。

语法

获取用户的提示和警告
CALL gds.userLog()
YIELD
  taskName,
  timeStarted,
  message
表 4. 结果
名称 类型 描述

taskName

字符串

生成警告或提示的任务名称,例如 WCC。

timeStarted

LocalTime

任务开始时的本地挂钟时间。

message

字符串

与任务关联的提示或警告。

示例

假设我们调用了 gds.wcc.stream 程序并设置了 relationshipWeightProperty,但未指定 threshold 值。这将生成一个警告,可以通过用户日志访问,如下所示。

CALL gds.userLog()
YIELD
  taskName,
  message
表 5. 结果
taskName message

"WCC"

"除非同时设置了 threshold,否则指定 relationshipWeightProperty 不会产生任何效果"

© . This site is unofficial and not affiliated with Neo4j, Inc.