NebulaGraph 数据智能套件
项目描述
使用4行代码在NebulaGraph上运行图算法的数据智能套件
文档: 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")
文档
工作原理
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引擎先决条件
- Spark 2.4,3.0(尚未测试)
- NebulaGraph 3.4+
- NebulaGraph Spark Connector 3.4+
- NebulaGraph算法 3.1+
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 查看散列值)