准备算法示例数据¶
算法示例通过 CSV 文件导入点和边。本文说明如何在 Docker Compose 部署中准备文件;具体的导入语句和算法代码见各算法页面。
在运行 Docker 的机器(下文称为宿主机)上打开终端,进入compose.yaml所在的部署目录。以下 Docker 命令均在该终端中执行。
1. 确认目录挂载¶
配套 compose.yaml 已在services.graphd.volumes中包含以下挂载,使用该文件部署时无需修改:
volumes:
- ./examples:/examples
./examples是compose.yaml同级的宿主机目录,在graphd容器中对应/examples。将 CSV 保存到该宿主机目录后,Graph 服务就能通过容器路径读取,无需再复制到容器中。
现有 compose.yaml 中没有这条挂载
在services.graphd.volumes列表中添加- ./examples:/examples,保留其他配置,然后检查:
docker compose config --quiet
检查通过后,应用配置:
docker compose up -d graphd
此操作会重新创建 Graph 容器,已有临时图及其数据会被删除。按检查服务状态确认服务正常后,重新连接悦数图管理。
2. 下载并保存 CSV 文件¶
各算法页面的准备图数据一节提供 CSV 下载链接和保存目录。以下以 PageRank 为例:
- 在部署目录下新建
examples/algorithms/pagerank文件夹。 - 下载 pagerank_node.csv 和 pagerank_edge.csv,保存到该文件夹,保留原文件名和
.csv扩展名。
保存后,目录结构如下:
dev-quickstart/
├── compose.yaml
└── examples/
└── algorithms/
└── pagerank/
├── pagerank_node.csv
└── pagerank_edge.csv
若文件下载到了浏览器的默认下载目录,将其移到上述位置;若浏览器直接显示 CSV 内容,使用“另存为”保存。其他算法使用各自页面指定的目录和文件。
在远程服务器上运行 Docker 时,文件也要保存到该服务器的部署目录中。
3. 检查文件并运行算法¶
在宿主机终端中执行以下命令,确认容器能看到 PageRank 的 CSV 文件:
docker compose exec graphd ls -1 /examples/algorithms/pagerank/
输出应包含pagerank_node.csv和pagerank_edge.csv。检查其他算法时,将命令中的pagerank替换为对应的目录名。
文件可见后,回到 PageRank 或所选算法页面,在悦数图管理的控制台中使用默认 Schema(/default_schema),按顺序执行该页示例。每个代码块执行成功后再继续。
重新运行或更换数据
仅修改算法参数时,重新调用过程即可。
修改 CSV 不会自动更新临时图。重新导入前,先删除原临时图及其数据。以 PageRank 为例,在悦数图管理控制台中执行以下语句;其他算法使用各自的临时图名称:
DROP GRAPH IF EXISTS #pagerank_graph
随后按算法页面重新创建临时图、导入数据并核对点数,再调用过程。Graph 服务重启后,也需要重新创建临时图并导入数据。
使用 ngql 执行示例
按 ngql 连接说明登录后,也可执行各算法页面的 GQL 示例。多行示例已在首尾各加一行''',复制时请包含这两行,无需重复添加。输入末尾的'''并按 Enter 后提交语句,详见 ngql 使用指南。
4. 查看结果¶
按算法页面的调用过程一节查看结果:
- 表格结果:在悦数图管理的查询结果区查看。
- CSV 文件:按页面给出的路径,在宿主机上打开结果目录。例如,PageRank 的结果保存在部署目录下的
examples/algorithms/pagerank/output/。
导出时会自动创建结果目录,文件名由系统生成。一次运行可能生成多个 CSV 文件,可按修改时间找到本次结果。
结果表未指定ORDER BY时,行顺序可能与页面示例不同,可按列名和数值核对。
文件问题排查¶
| 问题 | 检查方法 |
|---|---|
| 提示文件不存在 | 核对保存位置和文件名,再检查容器中的文件。容器看不到文件时,检查目录挂载。 |
| 提示权限不足 | 检查宿主机示例目录和 CSV 文件的权限,确保 Graph 服务可以读取输入文件、写入结果目录。 |
导入时提示Import to non-empty graph |
临时图中已有数据。继续使用现有数据时,跳过导入;需要换数据时,按重新导入操作。 |
| 调用时提示过程不存在 | 先成功执行算法页面中所需的过程定义,并确认定义和调用使用相同的 Schema。 |