全部产品
云市场

Connect Component算法使用

更新时间:2019-08-30 18:11:12

功能介绍

在MaxGraph中,用户可以通过Console/SDK提交Query的方式进行在加载好的图上进行Connect Component计算。

注意事项:只支持边的两端为同一种类型的点的连通子图计算。

subgraph/cap算子

  1. g.V(1).hasLabel("person_knows_person").out().outE().subgraph("p").cap("p")

在subgraph之前接入的算子的输出一定是E,全图会作为一种子图的特殊形式,在实现中会优化。例如:

  1. g.E().hasLabel("person_knows_person").subgraph("p").cap("p")

cc算子

输出是包含一个long类型的属性,这个属性是需要用户在点的schema中设置好,并且在语法中加上output(“属性名”), iteration参数使指定迭代次数。示例如下:

  1. .cc("cid", 50)

其中,cid是用户需要预先定义的属性字段,类型必须为long

fill算子

用户可以指定读取哪些属性,比如

  1. map(Prop.fill("id", "cid"))

output算子

支持用户导出结果到odps中,用户需要预先建好输出边,schema需要和write里面的字段的顺序和类型一致,比如:

  1. CREATE TABLE IF NOT EXISTS cc_result(id BIGINT, cid BIGINT) lifecycle 7;

输出结果语句示例如下:

  1. .output('tunnel://[accsessID]:[accessKey]@[tunnel_endpoint]#project=[project_name]&table=[table_name]', "id", "cid")

需要准备如下信息:

  1. 有权限访问MaxCompute的账号的accessID和accessKey,
  2. 待访问的MaxCompute project的tunnel endpoint、project name和table name

timeout算子

因为算法的运行时间可能比较长,需要在query里面加上timeout算子

  1. timeoutSec(600)

完整示例

  1. g.timeoutSec(600).E().subgraph("s").cap("s").cc("cid", 50).map(Prop.fill("id", "cid")).output('tunnel://accsessID:accessKey@service.odpsstg.aliyun-inc.com/stgnew#project=maxgraph&table=cc_result', "id", "cid")