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数据类型。 |