上下文¶
上下文对象¶
- class graphscope.framework.context.BaseContextDAGNode(bound_app, graph, *args, **kwargs)[源代码]¶
具体上下文DAG节点的基类。
在GraphScope中,评估应用后将返回具体类ContextDAGNode的实例,该实例会在eager模式下通过
Session.run()自动执行,并返回graphscope.framework.context.Context的实例- We can further use the handle to retrieve data:
作为 numpy.ndarray 数组 (to_numpy()),
作为 pandas.DataFrame(to_dataframe()),
作为 vineyard 张量(to_vineyard_tensor()),
或者作为vineyard数据框(to_vineyard_dataframe())。
以下示例展示了其用法:
>>> # lazy mode >>> import graphscope >>> from graphscope.dataset import load_p2p_network >>> sess = graphscope.session(cluster_type="hosts", mode="lazy") >>> g = load_p2p_network(sess) >>> sg = g.project(vertices={"host": ["id"]}, edges={"connect": ["dist"]}) >>> c = graphscope.sssp(sg, 20) >>> print(c) # <graphscope.framework.context.VertexDataContextDAGNode> >>> r1 = c.to_numpy("r") >>> print(r1) # <graphscope.framework.context.ResultDAGNode> >>> r2 = c.to_dataframe({"id": "v.id", "result": "r"}) >>> r3 = c.to_vineyard_tensor("r") >>> r4 = c.to_vineyard_dataframe({"id": "v.id", "result": "r"}) >>> r = sess.run([r1, r2, r3, r4]) >>> r[0].shape (62586,) >>> r[1].shape (62586, 2) >>> r[2] # return an object id >>> r[3] # return an object id >>> # eager mode >>> import graphscope >>> from graphscope.dataset import load_p2p_network >>> sess = graphscope.session(cluster_type="hosts", mode="eager") >>> g = load_p2p_network(sess) >>> sg = g.project(vertices={"host": ["id"]}, edges={"connect": ["dist"]}) >>> c = sssp(sg, 20) >>> print(c) # <graphscope.framework.context.Context> >>> r1 = c.to_numpy("r") >>> r1.shape (62586,) >>> r2 = c.to_dataframe({"id": "v.id", "result": "r"}) >>> r2.shape (62586, 2) >>> r3 = c.to_vineyard_tensor() # return an object id >>> r4 = c.to_vineyard_dataframe() # return an object id
- to_dataframe(selector, vertex_range=None)[源代码]¶
将上下文数据作为pandas DataFrame获取。
- Parameters:
selector – dict 键是数据框中的列名,值描述了如何选择上下文的值。更多详情请参阅派生上下文DAG节点类。
vertex_range – dict, 可选参数, 默认为 None。 用作切片功能。表达式 {'begin': m, 'end': n} 会选取从 m 到但不包括 n 的顶点范围。m 和 n 的类型必须与顶点oid类型一致。 只会获取顶点数据的子范围。 请注意这里的比较不是基于数字顺序,而是基于字母顺序。
- Returns:
结果包含在即时模式下评估的pandas.DataFrame。
- Return type:
- to_numpy(selector, vertex_range=None, axis=0)[源代码]¶
将上下文数据作为numpy数组获取。
- Parameters:
selector (str) - 描述如何选择上下文的值。更多详情请参阅派生的上下文DAG节点类。
vertex_range (dict) – 可选参数,默认为None。 用作切片功能。表达式{'begin': m, 'end': n}会选取从m开始到但不包括n的顶点部分。m和n的类型必须与顶点oid类型相同。 省略起始索引表示从顶点开头开始切片,省略结束索引表示切片延伸到顶点末尾。 请注意这里的比较不是基于数字顺序,而是基于字母顺序。
axis (int) – 可选参数,默认为0。
- Returns:
结果包含在即时执行模式下评估的numpy.ndarray。
- Return type:
- to_vineyard_dataframe(selector=None, vertex_range=None)[源代码]¶
获取上下文数据作为vineyard数据框并返回vineyard对象ID。
- Parameters:
selector – dict 键(key)用作数据框的列名,值(value)描述如何从上下文中选取数值。更多细节请参阅派生上下文DAG节点类。
vertex_range – dict, 可选参数, 默认为 None 用作切片功能。表达式 {'begin': m, 'end': n} 会选取从 m 到但不包括 n 的顶点子集。m 和 n 的类型必须与顶点oid类型一致。 只有该子范围内的顶点数据会被获取。
- Returns:
结果保存了vineyard数据框的对象ID,以即时模式评估。
- Return type:
- class graphscope.framework.context.TensorContextDAGNode(bound_app, graph, *args, **kwargs)[源代码]¶
张量上下文DAG节点持有一个张量。 在考虑TensorContext时,只有轴是有意义的。
- class graphscope.framework.context.VertexDataContextDAGNode(bound_app, graph, *args, **kwargs)[源代码]¶
最简单的一种上下文。 顶点有一个单一的值作为结果。
- The syntax of selector on vertex is:
v.id: 获取顶点的ID
- v.data: 获取顶点数据
如果有的话,表示图上的原始数据,而非计算结果。
- The syntax of selector of edge is (not supported yet):
e.src: 获取边的源ID
e.dst: 获取边的目标顶点ID
- e.data: 获取边上的边数据
如果有的话,表示图上的原始数据
- The syntax of selector of results is:
r: 获取算法查询结果。例如执行PageRank后顶点的排名。
- class graphscope.framework.context.LabeledVertexDataContextDAGNode(bound_app, graph, *args, **kwargs)[源代码]¶
带标签类型的上下文。 该上下文包含多个顶点标签和边标签,每个标签都有若干属性。 选择操作首先在标签上进行,然后在属性上进行。
我们使用:来过滤标签,使用.来选择属性。结果不包含属性,仅包含标签。
- The syntax of selector of vertex is:
v:label_name.id: 获取属于特定顶点标签的ID。
v:label_name.property_name: 获取特定顶点标签上特定属性的数据。
- The syntax of selector of edge is (not supported yet):
e:label_name.src: 获取特定边标签的源ID。
e:label_name.dst: 获取指定边标签的目标ID。
e:label_name.property_name: 获取特定边标签的特定属性数据。
- The syntax of selector of results is:
r:label_name: 获取顶点标签的结果数据。
- class graphscope.framework.context.VertexPropertyContextDAGNode(bound_app, graph, *args, **kwargs)[源代码]¶
带有属性的简单上下文类型。 一个顶点可以有多个值(也称为属性)作为结果。
- The syntax of selector on vertex is:
v.id: 获取顶点的ID
- v.data: 获取顶点数据
如果有的话,表示图上的原始数据,而非计算结果
v.label_id: 获取每个顶点的标签ID。
- The syntax of selector of edge is (not supported yet):
e.src: 获取边的源ID
e.dst: 获取边的目标顶点ID
- e.data: 获取边上的边数据
如果有的话,表示图上的原始数据
- The syntax of selector of results is:
- r.column_name: 获取结果中名为column_name的属性。
例如:在
graphscope.hits()中的r.hub。
- class graphscope.framework.context.LabeledVertexPropertyContextDAGNode(bound_app, graph, *args, **kwargs)[源代码]¶
带有属性的标签类型上下文。 该上下文包含多个顶点标签和边标签,每个标签都有若干属性。 选择操作首先在标签上执行,然后在属性上执行。
我们使用:来过滤标签,使用.来选择属性。 结果可以包含多个属性。
- The syntax of selector of vertex is:
v:label_name.id: 获取属于特定顶点标签的ID。
v:label_name.property_name: 获取特定顶点标签上特定属性的数据。
- The syntax of selector of edge is (not supported yet):
e:label_name.src: 获取特定边标签的源ID。
e:label_name.dst: 获取特定边标签的目标ID。
e:label_name.property_name: 获取特定边标签的特定属性数据。
- The syntax of selector of results is:
r:label_name.column_name: 获取label_name中名为column_name的属性。
- class graphscope.framework.context.Context(context_node, key, result_schema)[源代码]¶
持有一个应用查询上下文的句柄。
评估应用后,上下文(顶点数据、部分结果等)会被保留,并可通过句柄引用。