user82
1
提问参考模版:
- nebula 版本:3.2.0
- 部署方式:分布式
- 是否为线上版本:N
各位老师好!
我想复现一个反欺诈的案例,项目地址:https://www.nebula-graph.com.cn/posts/fraud-detection#post-图神经网络的方法 直接看“图神经网络的方法”章节就行。
目前已完成:
– yelp数据导入到nebula
– 安装了DGL 和 nebula-dgl,和一些必要库
我的nebula服务相关IP:
– meta_server_addrs=192.168.200.100:9559,192.168.200.101:9559,192.168.200.111:9559
– graphserver 192.168.200.100:9669, 192.168.200.101:9669, 192.168.200.111:9669, 192.168.200.112:9669, 192.168.200.114:9669
– 在nebula stadio中show hosts:
我目前做到了这里:
附上上图中红色框内的链接:
https://github.com/wey-gu/nebulagraph-yelp-frauddetection
我跑下面这个测试时:
将graph_hosts的修改分别做了如下尝试:
1.
报错:
2.
报错:
3.
报错:
请问我应该怎么解决这个错误呢?
steam
拆分了此话题
2
user82
4
提问参考模版:
- nebula 版本:3.2.0
- 部署方式:分布式
- 是否为线上版本:N
各位老师好!
我想复现一个反欺诈的案例,项目地址:https://www.nebula-graph.com.cn/posts/fraud-detection#post-图神经网络的方法 直接看“图神经网络的方法”章节就行。
目前已完成:
– yelp数据导入到nebula
– 安装了DGL 和 nebula-dgl,和一些必要库
我的nebula服务相关IP:
– meta_server_addrs=192.168.200.100:9559,192.168.200.101:9559,192.168.200.111:9559
– graphserver 192.168.200.100:9669, 192.168.200.101:9669, 192.168.200.111:9669, 192.168.200.112:9669, 192.168.200.114:9669
– 在nebula stadio中show hosts:
我目前做到了这里:
附上上图中红色框内的链接:
https://github.com/wey-gu/nebulagraph-yelp-frauddetection
我跑下面这个测试时:
将graph_hosts的修改分别做了如下尝试:
1.
报错:
2.
报错:
3.
报错:
请问我应该怎么解决这个错误呢?
wey
6
nebula-dgl 是通过 storaged 扫数据的,需要能访问到 storaged/metad 哈,你这里报错就是这样的,你可以试着让 python 运行在 nebulacluster 所在 k8s 网络绕过这个问题哈
2 个赞
wey
7
另外,你用我文中的 nebula-up 去准备环境会更方便一些
user82
8
也就是说 可以在容器里面尝试对吗?我先试试这个
谢谢老师!
user82
9
老师您好,我们的nebula是部署在服务器实体的,没有在k8s环境里面。
而且,我用如下方式是可以连接nebula的:
我在想如何能使用您这个项目中的NebulaLoader类,同时换成我上图的连接方式呢?
wey
10
这样呀,奇怪,看这个报错,它访问的是 operator 部署的集群呢哈
wey
11
这个情况比k8s 好办哈,保证 metad,storaged 地址可以被 python 运行环境访问就好了哈。你可以先用 python storage client 扫数据,能过了就说明OK
user82
12
这个报错是我将端口改为9669:
我要是改为9779,就变成了这个报错:
我也不知道应该写哪个
但是在本地电脑的notebook中,用(‘192.168.200.101’,9669)就可以连上服务器的nebula。 
user82
13
您能再详细点说吗? 
附上我的meta地址:192.168.200.100:9559,192.168.200.101:9559,192.168.200.111:9559
graph地址:192.168.200.100:9669, 192.168.200.101:9669,192.168.200.111:9669, 192.168.200.112:9669, 192.168.200.114:9669
storage地址:
wey
14
9669 是 graphd
9559 是 metad
9779 是 storaged
nebula-dgl 会从 graphD 获取所有的 metad 地址和 storaged 地址传给 storageclient 用来扫底层数据,所以 nebula-dgl 不像 console 一样只需要 9669 的连接,前边配置的是 graph host,是 graphd 的地址 9669 没有错,不要改成其他的。
wey
15
看你这个地址的就知道是 nebula-operator k8s 部署的,集群内部 meta/storage 的地址都是 k8s 里的域名,这时候想让 storageclient 访问的最方便的方法就是 把 nebula-dgl/storagclient 跑在这个 k8s 集群内部了。。。
user82
16
哦哦 明白了 那其实我的问题是 nebula-dgl 能够访问graphd的地址,但是metad和storage地址访问不到,才报的错误,对吧?
user82
18
部署的同事又帮我在服务器实体机部署并升级了下 现在问题顺利解决了!确实是需要meta/storage都可以访问才行 
感谢老师的解答!!
1 个赞
user82
19
老师 我可否再确认一个:
我理解这个nebulagraph_yelp_dgl_mapper.yaml,就是将yelp空间中的所有节点和边都取出来,同时,将属性做相应的特征转换计算,然后形成图谱g,接下来就可以将图g转化为networkx去使用了,对吧?
wey
20
dgl 到 networkx 的转化应该是要求是同构图才行哈。
user82
21
OK.今天看了异构图转同构图。
老师 我在训练的时候报错了:
然后我将ys和y_hats打印了下:
我理解是不是y_hats中每一个tensor有两列(应该是2维的),而ys是一维的,才报的错?
那我如何取y_hats的最后一列呢(如果这一列是预测为正的话)
wey
22
你是参考
https://github.com/wey-gu/NebulaGraph-Fraud-Detection-GNN
完全一样的操作么?