Cython SDK API

Pregel

class graphscope.analytical.app.pregel.Vertex[VD_TYPE, MD_TYPE]

用于存储顶点ID、数据及边的类。

VD_TYPE: 顶点数据类型 MD_TYPE: 消息类型

id() str

获取顶点ID。

label() str

获取顶点标签。

label_id() int

获取顶点标签ID。

properties() vector[pair[str, str]]

获取顶点属性列表,包含属性名称和属性类型。 请注意,属性类型为以下之一("INT", "DOUBLE", "STRING")

set_value(value: VD_TYPE)

设置顶点数据,在当前轮次中立即可见。

value() VD_TYPE

获取顶点值,即与顶点关联存储的数据。

get_str(property_id: int) str

通过属性ID获取顶点字符串数据。

get_str(property_name: str) str

通过属性名称获取顶点的字符串数据。

get_double(property_id: int) double

通过属性ID获取顶点字符串数据。

get_double(property_name: str) double

通过属性名称获取顶点的双精度数据。

get_int(property_id: int) str

通过属性ID获取顶点的整型数据。

get_int(property_name: str) str

通过属性名获取顶点的整型数据。

outgoing_edges(edge_label_id: int) AdjList[VD_TYPE, MD_TYPE]

通过该顶点的边标签ID获取可迭代的出边。

outgoing_edges(edge_label_name: str) AdjList[VD_TYPE, MD_TYPE]

通过该顶点的边标签名称获取可迭代的出边。

incoming_edges(edge_label_id: int) AdjList[VD_TYPE, MD_TYPE]

通过该顶点的边标签ID获取可迭代的入边。

incoming_edges(edge_label_name: str) AdjList[VD_TYPE, MD_TYPE]

通过该顶点的边标签名称获取入边的可迭代对象。

send(v: Vertex[VD_TYPE, MD_TYPE], msg: MD_TYPE)

向目标顶点发送消息。

vote_to_halt()

调用此方法后,compute()代码将不再被该顶点调用,直到接收到消息为止。只有当所有顶点都投票停止时,应用程序才会结束。

class graphscope.analytical.app.pregel.Neighbor[VD_TYPE, MD_TYPE]
vertex() Vertex[VD_TYPE, MD_TYPE]

获取相邻顶点。

get_str(column: int) str

通过列ID获取边的字符串数据。

get_int(column: int) str

通过列ID获取边的整型数据。

get_double(column: int) str

通过列ID获取边的双精度数据。

class graphscope.analytical.app.pregel.AdjList[VD_TYPE, MD_TYPE]
begin() Neighbor

返回迭代器的起始地址。

end() Neighbor

返回迭代器的结束地址。

size() size_t

获取邻接表的大小。

class graphscope.analytical.app.pregel.Context[VD_TYPE, MD_TYPE]

该类保存当前步骤、聚合器信息、查询参数和其他实用功能。

get_config(key: str) str

获取指定键对应的值,若键不存在则返回空字符串""。

register_aggregator(name: str, type: PregelAggregatorType)

注册一个特定类型的聚合器,命名为name

aggregate[AGGR_TYPE](name: str, value: AGGR_TYPE)

向聚合器添加一个新值。

get_aggregated_value[AGGR_TYPE](name: str) AGGR_TYPE

从聚合器中获取值。

superstep() int

获取当前超级步数,从0开始。

get_total_vertices_num() size_t

获取顶点总数。

vertex_label_num() int

获取顶点标签数量。

edge_label_num() int

获取边标签数量。

vertex_property_num(vertex_label_name: str) int

通过顶点标签名称获取顶点属性数量。

vertex_property_num(vertex_label_id: int) int

通过顶点标签ID获取顶点属性数量。

edge_property_num(edge_label_name: str) int

通过边标签名称获取边的属性数量。

edge_property_num(edge_label_id: int) int

通过边标签ID获取顶点属性数量。

vertex_labels() vector[str]

获取顶点标签列表。

edge_labels() vector[str]

获取边标签列表。

get_vertex_label_by_id(vertex_label_id: int) str

通过顶点标签ID获取顶点标签名称。

get_vertex_label_id_by_name(vertex_label_name: str) int

通过名称获取顶点标签ID。

get_edge_label_by_id(edge_label_id: int) str

通过标签ID获取边标签名称。

get_edge_label_id_by_name(edge_label_name: str) int

通过名称获取边标签ID。

vertex_properties(vertex_label_id: int) vector[pair[str, str]]

根据标签ID获取顶点属性列表。

vertex_properties(vertex_label_name: str) vector[pair[str, str]]

根据顶点标签名称获取顶点属性列表。

edge_properties(edge_label_id: int) vector[pair[str, str]]

通过边标签ID获取边属性列表。

edge_properties(edge_label_name: str) vector[pair[str, str]]

根据边标签名称获取边属性列表。

get_vertex_property_id_by_name(vertex_label_name: str, vertex_property_name: str) int

通过属性名称获取顶点属性ID。

get_vertex_property_id_by_name(vertex_label_id: int, vertex_property_name: str) int

通过属性名称获取顶点属性ID。

get_vertex_property_by_id(vertex_label_name: str, vertex_property_id: int) str

通过属性ID获取顶点属性名称。

get_vertex_property_by_id(vertex_label_id: int, vertex_property_id: int) int

通过属性ID获取顶点属性名称。

get_edge_property_id_by_name(edge_label_name: str, edge_property_name: str) int

通过属性名称获取边的属性ID。

get_edge_property_id_by_name(edge_label_id: int, edge_property_name: str) int

通过属性名称获取边的属性ID。

get_edge_property_by_id(edge_label_name: str, edge_property_id: int) str

通过属性ID获取边的属性名称。

get_edge_property_by_id(edge_label_id: int, edge_property_id: int) int

通过属性ID获取边的属性名称。

class graphscope.analytical.app.pregel.MessageIterator[MD_TYPE]
empty() bool

如果队列中没有消息则返回True。

class graphscope.analytical.app.pregel.PregelAggregatorType
kBoolAndAggregator

用于计算布尔值AND函数的聚合器。当没有聚合任何值时,默认值为true。

kBoolOrAggregator

用于计算布尔值OR函数的聚合器。 当没有聚合任何值时,默认值为false。

kBoolOverwriteAggregator

该聚合器存储一个值,当另一个值被聚合时会覆盖原有值。 请注意,如果有多个顶点向此聚合器写入,其行为将是非确定性的。此聚合器的默认值为false。

kDoubleMinAggregator

用于获取最小双精度值的聚合器。

kDoubleMaxAggregator

用于获取最大双精度值的聚合器。

kDoubleSumAggregator

用于累加双精度值的聚合器。

kDoubleProductAggregator

用于计算双精度值乘积的聚合器。

kDoubleOverwriteAggregator

该聚合器存储一个值,当另一个值被聚合时会被覆盖。 请注意,如果有多个顶点向此聚合器写入,其行为将是不确定的。

kInt64MinAggregator

用于获取最小int64值的聚合器。

kInt64MaxAggregator

用于获取最大int64值的聚合器。

kInt64SumAggregator

用于累加int64值的聚合器。

kInt64ProductAggregator

用于计算int64值乘积的聚合器。

kInt64OverwriteAggregator

该聚合器存储一个值,当另一个值被聚合时会被覆盖。 请注意,如果有多个顶点向此聚合器写入,其行为将是不确定的。

kTextAppendAggregator

以字符串为值的聚合器,持续向其追加文本。

PIE

class graphscope.analytical.app.pie.MessageStrategy
kAlongOutgoingEdgeToOuterVertex

对于每个内部顶点,它将沿着出边向目标顶点发送消息。

kAlongIncomingEdgeToOuterVertex

对于每个内部顶点,它将沿着入边向目标顶点发送消息。

kAlongEdgeToOuterVertex

对于每个内部顶点,它将沿着入边和出边向目标顶点发送消息。

kSyncOnOuterVertex

对于每个外部顶点,它将向其所属的分片发送消息(同步消息给自己)。

class graphscope.analytical.app.pie.Vertex
Vertex()

图中的顶点。

class graphscope.analytical.app.pie.VertexRange
VertexRange()

顶点的范围列表,仅包含顶点ID。

begin() Vertex

顶点范围列表的起始地址。

end() Vertex

顶点范围列表的结束地址。

size() int

顶点范围列表的大小。

class graphscope.analytical.app.pie.VertexArray[T]
VertexArray()

顶点列表,其中也包含顶点数据。

Init(range: VertexRange)

使用默认值初始化顶点数组。

Init(range: VertexRange, const T& value)

使用指定值初始化顶点数组。

operator(v: Vertex) T

获取顶点数据。

class graphscope.analytical.app.pie.Nbr
Nbr()
neighbor() Vertex

获取相邻顶点。

get_str(column: int) str

通过列ID获取边的字符串数据。

get_int(column: int) str

通过列ID获取边的整型数据。

get_double(column: int) str

通过列ID获取边的双精度数据。

class graphscope.analytical.app.pie.AdjList
AdjList()
begin() Nbr

返回邻接表的起始地址。

end() Nbr

返回邻接列表的结束地址。

size() int

获取邻接表的大小。

class graphscope.analytical.app.pie.Fragment
Fragment()
fid() int

获取分片ID。

fnum() int

获取分片数量。

vertex_label_num() int

获取顶点标签数量。

edge_label_num() int

获取边标签数量。

get_total_nodes_num() size_t

获取顶点总数。

get_nodes_num(vertex_label_id: int) size_t

通过标签ID获取顶点(内部+外部)数量。

get_inner_nodes_num(vertex_label_id: int) size_t

通过标签ID获取内部顶点编号。

get_outer_nodes_num(vertex_label_id: int) size_t

通过标签ID获取外部顶点数量。

nodes(vertex_label_id: int) VertexRange

通过标签ID获取该分片的顶点范围。

inner_nodes(vertex_label_id: int) VertexRange

通过标签ID获取此分片中的内部顶点范围。

outer_nodes(vertex_label_id: int) VertexRange

通过标签ID获取此分片中的外部顶点范围。

get_node_fid(v: Vertex) int

获取顶点 v 的分片ID。

is_inner_node(v: Vertex) bool

如果v是该分片的内顶点,则返回True。

is_outer_node(v: Vertex) bool

如果v是该片段的边界顶点,则返回False。

get_node(label_id: int, oid: string&, v: Vertex&) bool

如果该片段中存在oid则返回True。

get_inner_node(label_id: int, oid: string&, v: Vertex&) bool

如果oid存在于该分片中的内部顶点,则返回True,并将节点赋值给v

get_outer_node(label_id: int, oid: string&, v: Vertex&) bool

如果oid存在于该片段的外部顶点中,则返回True,并将该节点赋值给v

get_node_id(v: Vertex) str

返回顶点 v 的 oid。

get_outgoing_edges(v: Vertex, edge_label_id: int) AdjList

通过该顶点的标签ID获取其出边的可迭代对象。

get_incoming_edges(v: Vertex, edge_label_id: int) AdjList

通过该顶点的标签ID获取其入边的可迭代对象。

has_child(v: Vertex, edge_label_id: int) bool

如果顶点通过边标签ID的连接拥有子节点,则返回True。

has_parent(v: Vertex, edge_label_id: int) bool

如果顶点通过边标签ID的连接拥有父顶点,则返回True。

get_indegree(v: Vertex, edge_label_id: int) bool

返回指定边ID的边的入度。

get_outdegree(v: Vertex, edge_label_id: int) bool

返回指定边ID的边的出度。

get_str(v: Vertex, vertex_property_id: int) str

通过属性ID获取顶点字符串数据。

get_int(v: Vertex, vertex_property_id: int) int

通过属性ID获取顶点的整型数据。

get_double(v: Vertex, vertex_property_id: int) double

通过属性ID获取顶点的双精度数据。

vertex_labels() vector[str]

获取顶点标签列表。

edge_labels() vector[str]

获取边标签列表。

get_vertex_label_by_id(vertex_label_id: int) str

通过顶点标签ID获取顶点标签名称。

get_vertex_label_id_by_name(vertex_label_name: str) int

通过名称获取顶点标签ID。

get_edge_label_by_id(edge_label_id: int) str

通过标签ID获取边标签名称。

get_edge_label_id_by_name(edge_label_name: str) int

通过名称获取边标签ID。

vertex_properties(vertex_label_id: int) vector[pair[str, str]]

根据标签ID获取顶点属性列表。

vertex_properties(vertex_label_name: str) vector[pair[str, str]]

根据顶点标签名称获取顶点属性列表。

edge_properties(edge_label_id: int) vector[pair[str, str]]

通过边标签ID获取边属性列表。

edge_properties(edge_label_name: str) vector[pair[str, str]]

根据边标签名称获取边属性列表。

get_vertex_property_id_by_name(vertex_label_name: str, vertex_property_name: str) int

通过属性名称获取顶点属性ID。

get_vertex_property_id_by_name(vertex_label_id: int, vertex_property_name: str) int

通过属性名称获取顶点属性ID。

get_vertex_property_by_id(vertex_label_name: str, vertex_property_id: int) str

通过属性ID获取顶点属性名称。

get_vertex_property_by_id(vertex_label_id: int, vertex_property_id: int) int

通过属性ID获取顶点属性名称。

get_edge_property_id_by_name(edge_label_name: str, edge_property_name: str) int

通过属性名称获取边的属性ID。

get_edge_property_id_by_name(edge_label_id: int, edge_property_name: str) int

通过属性名称获取边的属性ID。

get_edge_property_by_id(edge_label_name: str, edge_property_id: int) str

通过属性ID获取边的属性名称。

get_edge_property_by_id(edge_label_id: int, edge_property_id: int) int

通过属性ID获取边的属性名称。

class graphscope.analytical.app.pie.Context[VD_TYPE, MD_TYPE]
Context()
superstep() int

获取当前超级步。

get_config(key: str) str

获取指定键对应的值,若键不存在则返回空字符串""。

init_value(range: VertexRange, value: MD_TYPE, type: PIEAggregateType)

使用值和类型聚合器初始化顶点范围。

register_sync_buffer(v_label_id: int, strategy: MessageStrategy)

设置自动并行消息策略。

set_node_value(v: Vertex, value: VD_TYPE)

设置顶点的值。

get_node_value(v: Vertex) VD_TYPE

获取顶点的值。

class graphscope.analytical.app.pie.PIEAggregateType

消息自动传递后,每个内部顶点将聚合其接收到的消息。

kMinAggregate

用于获取最小值的聚合器。

kMaxAggregate

用于获取最大值的聚合器。

kSumAggregate

用于求和的聚合器。

kProductAggregate

用于计算值乘积的聚合器。

kOverwriteAggregate

该聚合器存储一个值,当另一个值被聚合时会被覆盖。 请注意,如果有多个顶点向此聚合器写入,其行为将是不确定的。

kTextAppendAggregate

以字符串为值的聚合器,持续向其追加文本。

GraphScope 类型

功能

graphscope.declare(graphscope_type, variable)

声明一个GraphScope数据类型。