跳转到主要内容

NebulaGraph 数据智能套件

项目描述

NebulaGraph Data Intelligence Suite(ngdi)

使用4行代码在NebulaGraph上运行图算法的数据智能套件

License PyPI version Python pdm-managed


文档: https://github.com/wey-gu/nebulagraph-di#documentation

源代码: https://github.com/wey-gu/nebulagraph-di


NebulaGraph 数据智能套件 for Python (ngdi) 是一个强大的Python库,为数据科学家提供API,以有效地在NebulaGraph中读取、写入、分析和计算数据。

借助单机引擎(NetworkX)或使用Spark的分布式计算环境,我们可以在少于10行代码的情况下,在统一且直观的API上对NebulaGraph执行图分析和算法。

5分钟快速开始

  • 根据此指南使用Nebula-Up设置环境。
  • 从Jupyter Notebook使用pip安装ngdi,链接为http://localhost:8888(密码:nebula)。
  • 打开演示笔记本,逐个运行单元格。
  • 查看API参考

安装

pip install ngdi

用法

从nGQL调用

更多详情请参阅文档

RETURN ngdi("pagerank", ["follow"], ["degree"], "spark",
    {space: "basketballplayer", max_iter: 10}, {write_mode: "insert"})

Spark引擎示例

另请参阅:examples/spark_engine.ipynb

在NebulaGraph上运行算法

注意,还有查询模式,请参阅示例文档获取更多详情。

from ngdi import NebulaReader

# read data with spark engine, scan mode
reader = NebulaReader(engine="spark")
reader.scan(edge="follow", props="degree")
df = reader.read()

# run pagerank algorithm
pr_result = df.algo.pagerank(reset_prob=0.15, max_iter=10)

写回NebulaGraph

from ngdi import NebulaWriter
from ngdi.config import NebulaGraphConfig

config = NebulaGraphConfig()

properties = {"louvain": "cluster_id"}

writer = NebulaWriter(
    data=df_result, sink="nebulagraph_vertex", config=config, engine="spark")
writer.set_options(
    tag="louvain", vid_field="_id", properties=properties,
    batch_size=256, write_mode="insert",)
writer.write()

然后我们可以在NebulaGraph中查询结果

MATCH (v:louvain)
RETURN id(v), v.louvain.cluster_id LIMIT 10;

NebulaGraph引擎示例(尚未实现)

基本上与Spark引擎相同,但使用engine="nebula"

- reader = NebulaReader(engine="spark")
+ reader = NebulaReader(engine="nebula")

文档

环境设置

API参考

工作原理

ngdi是一个针对不同引擎的统一抽象层,当前实现基于Spark、NetworkX、DGL和NebulaGraph,但易于扩展到Flink、GraphScope、PyG等其它引擎。

          ┌───────────────────────────────────────────────────┐
          │   Spark Cluster                                   │
          │    .─────.    .─────.    .─────.    .─────.       │
          │   ;       :  ;       :  ;       :  ;       :      │
       ┌─▶│   :       ;  :       ;  :       ;  :       ;      │
       │  │    ╲     ╱    ╲     ╱    ╲     ╱    ╲     ╱       │
       │  │     `───'      `───'      `───'      `───'        │
  Algo Spark                                                  │
    Engine└───────────────────────────────────────────────────┘
       │  ┌────────────────────────────────────────────────────┬──────────┐
       └──┤                                                    │          │
          │   NebulaGraph Data Intelligence Suite(ngdi)        │ ngdi-api │◀─┐
          │                                                    │          │  │
          │                                                    └──────────┤  │
          │     ┌────────┐    ┌──────┐    ┌────────┐   ┌─────┐            │  │
          │     │ Reader │    │ Algo │    │ Writer │   │ GNN │            │  │
 ┌───────▶│     └────────┘    └──────┘    └────────┘   └─────┘            │  │
 │        │          │            │            │          │               │  │
 │        │          ├────────────┴───┬────────┴─────┐    └──────┐        │  │
 │        │          ▼                ▼              ▼           ▼        │  │
 │        │   ┌─────────────┐ ┌──────────────┐ ┌──────────┐┌──────────┐   │  │
 │     ┌──┤   │ SparkEngine │ │ NebulaEngine │ │ NetworkX ││ DGLEngine│   │  │
 │     │  │   └─────────────┘ └──────────────┘ └──────────┘└──────────┘   │  │
 │     │  └──────────┬────────────────────────────────────────────────────┘  │
 │     │             │        Spark                                          │
 │     │             └────────Reader ────────────┐                           │
 │  Spark                   Query Mode           │                           │
 │  Reader                                       │                           │
 │Scan Mode                                      ▼                      ┌─────────┐
 │     │  ┌───────────────────────────────────────────────────┬─────────┤ ngdi-udf│◀─────────────┐
 │     │  │                                                   │         └─────────┤              │
 │     │  │  NebulaGraph Graph Engine         Nebula-GraphD   │   ngdi-GraphD     │              │
 │     │  ├──────────────────────────────┬────────────────────┼───────────────────┘              │
 │     │  │                              │                    │                                  │
 │     │  │  NebulaGraph Storage Engine  │                    │                                  │
 │     │  │                              │                    │                                  │
 │     └─▶│  Nebula-StorageD             │    Nebula-Metad    │                                  │
 │        │                              │                    │                                  │
 │        └──────────────────────────────┴────────────────────┘                                  │
 │                                                                                               │
 │    ┌───────────────────────────────────────────────────────────────────────────────────────┐  │
 │    │ RETURN ngdi("pagerank", ["follow"], ["degree"], "spark", {space: "basketballplayer"}) │──┘
 │    └───────────────────────────────────────────────────────────────────────────────────────┘
 │  ┌─────────────────────────────────────────────────────────────┐
 │  │ from ngdi import NebulaReader                               │
 │  │                                                             │
 │  │ # read data with spark engine, scan mode                    │
 │  │ reader = NebulaReader(engine="spark")                       │
 │  │ reader.scan(edge="follow", props="degree")                  │
 └──│ df = reader.read()                                          │
    │                                                             │
    │ # run pagerank algorithm                                    │
    │ pr_result = df.algo.pagerank(reset_prob=0.15, max_iter=10)  │
    │                                                             │
    └─────────────────────────────────────────────────────────────┘  

Spark引擎先决条件

NebulaGraph引擎先决条件

许可证

本项目遵循Apache License 2.0条款。

项目详情


下载文件

下载适合您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

ngdi-0.2.6.tar.gz (18.6 kB 查看散列值)

上传时间 源代码

构建分发

ngdi-0.2.6-py3-none-any.whl (20.2 kB 查看散列值)

上传时间 Python 3

支持