嬴图的图算法可通过GQL和UQL在嬴图Manager和嬴图CLI上运行,或将嬴图Drivers集成到应用程序中。嬴图Drivers支持多种编程语言,包括Java、Python、Go、Node.js和C#。
算法结果
算法运行结果包括主要结果和一些可选的统计信息。
- 主要结果是算法的核心输出,如点排名、成对相似度和计算的指标。
- 统计信息(如有)提供汇总数据,包括平均值、总和和分布细节,以便对主要结果作进一步分析。
运行模式
算法支持以下六种运行模式:文件回写、数据库回写、统计回写、完整返回、流式返回和统计返回。
一个算法可能支持以上部分或全部运行模式。详情请参阅各算法介绍页面。
整体上来说,HDC算法和分布式算法对这些运行模式的支持有所不同:
运行模式 | HDC算法 | 分布式算法 |
---|---|---|
文件回写 | 支持 | 支持 |
数据库回写 | 支持 | 支持 |
统计回写 | 支持 | / |
完整返回 | 支持 | / |
流式返回 | 支持 | / |
统计返回 | 支持 | / |
下面我们将具体介绍每种运行模式及其语法。请注意,无论算法是在HDC图还是分布式投影上运行,语法是相同的。
文件回写
文件回写模式下,算法以作业形式运行,将主要结果写至一个或多个文件中,统计信息保存在作业中,方便后续访问。该模式在处理大型输出结果时非常有用,不用将数据直接返回至客户端,尤其适用于需要离线存储或对数据进行后续处理的场景。
CALL algo.<algoName>.write("<hdcGraphName_Or_DistProjName>", {
params: {
...
},
return_params: {
file: {
filename: "<fileName>"
}
}
})
algo(<algoName>).params({
project: "<hdcGraphName_Or_DistProjName>",
...
}).write({
file: {
filename: "<fileName>"
}
})
详情
- 可以在
<fileName>
中指定文件的扩展名(如.csv
或.txt
),如果未指定,系统会使用默认格式或通用格式。
数据库回写
数据库回写模式下,算法以作业形式运行,将主要结果中的指定列直接写入数据库中指定的点属性里,以便永久存储,将统计信息(如有)保存在作业中,在未来查询或分析时,能随时使用。
CALL algo.<algoName>.write("<hdcGraphName_Or_DistProjName>", {
params: {
...
},
return_params: {
db: {
property: "<propertyName>"
}
}
})
algo(<algoName>).params({
project: "<hdcGraphName_Or_DistProjName>",
...
}).write({
db: {
property: "<propertyName>"
}
})
详情
- 如果指定属性不存在,系统会在所有标签(schema)下创建该属性。
- 如果指定的属性存在且类型正确,现有属性值将被覆盖。如果类型不正确,数据库回写失败。
- 若点有算法结果返回,返回值会存储在属性里;若点没有算法结果返回,则根据结果类型接收默认值,如0或空字符串。
统计回写
统计回写模式下,算法以作业形式运行。运行过程会生成统计信息,并与作业一同保存下来。
CALL algo.<algoName>.write("<hdcGraphName>", {
params: {
...
},
return_params: {
stats: {}
}
})
algo(<algoName>).params({
project: "<hdcGraphName>",
...
}).write({
stats: {}
})
完整返回
完整返回模式下,算法以实时进程形式运行。算法运行完成后,将完整的主要结果汇总成单条响应,返回给客户端。
CALL algo.<algoName>("<hdcGraphName>", {
params: {
...
},
return_params: {}
}) YIELD <resultsAlias>
RETURN <resultsAlias>
exec{
algo(<algoName>).params({
...
}) as <resultsAlias>
return <resultsAlias>
} on <hdcGraphName>
流式返回
流式返回模式下,算法以实时进程形式运行。主要结果在生成时会流式逐步返回至客户端。在此模式下,资源使用率得到优化,访问结果速度加快,非常适合需要即时反馈的应用程序。
CALL algo.<algoName>("<hdcGraphName>", {
params: {
...
},
return_params: {
stream: {}
}
}) YIELD <resultsAlias>
RETURN <resultsAlias>
exec{
algo(<algoName>).params({
...
}).stream() as <resultsAlias>
return <resultsAlias>
} on <hdcGraphName>
统计返回
统计返回模式下,算法以实时进程形式运行。算法运行完成后,将统计信息返回给客户端。
CALL algo.<algoName>("<hdcGraphName>", {
params: {
...
},
return_params: {
stats: {}
}
}) YIELD <statsAlias>
RETURN <statsAlias>
exec{
algo(<algoName>).params({
...
}).stats() as <statsAlias>
return <statsAlias>
} on <hdcGraphName>