importer工具导入边数据不报错,但是用match语句查询出的边数据比原始数据少?

  • nebula 版本:2.5.0
  • 部署方式: 单机

自己准备的一个关于邮件的数据集,边数据供7665条,使用nebul-importer工具导入没有报错;并创建边索引、重建索引成功后使用match语句查询出的结果只有327条,重复多次操作都是只读出了327条,但是顶点数据的查询结果没有问题,不知道问题出在哪里,如何排查?

创建图空间VID指定的是string,实际csv里面的id是int型,试过指定VID为int查询结果也是一样。

下面是导入时的日志信息,email_edge.csv为边数据:

[zh@ke-edge3 nebula-importer-master]$ ./nebula-importer --config /home/zh/config_email_.yaml 
2022/02/08 09:52:02 --- START OF NEBULA IMPORTER ---
2022/02/08 09:52:02 [INFO] connection_pool.go:79: [nebula-go] connection pool is initialized successfully
2022/02/08 09:52:02 [INFO] clientmgr.go:28: Create 10 Nebula Graph clients
2022/02/08 09:52:02 [INFO] reader.go:64: Start to read file(0): /home/zh/graph_data/person_vertex.csv, schema: < :VID(string),person.name:string >
2022/02/08 09:52:02 [INFO] reader.go:64: Start to read file(1): /home/zh/graph_data/email_vertex.csv, schema: < :VID(string),email.docnum:string,email.subject:string,email.sendfrom:string,email.sendto:string,email.senddate:string,email.copy:string,email.text:string >
2022/02/08 09:52:02 [INFO] reader.go:64: Start to read file(2): /home/zh/graph_data/email_edge.csv, schema: < :SRC_VID(string),:DST_VID(string) >
2022/02/08 09:52:02 [INFO] reader.go:180: Total lines of file(/home/zh/graph_data/person_vertex.csv) is: 513, error lines: 0
2022/02/08 09:52:02 [INFO] statsmgr.go:62: Done(/home/zh/graph_data/person_vertex.csv): Time(0.04s), Finished(1613), Failed(0), Read Failed(0), Latency AVG(4967us), Batches Req AVG(5465us), Rows AVG(44764.09/s)
2022/02/08 09:52:02 [INFO] reader.go:180: Total lines of file(/home/zh/graph_data/email_edge.csv) is: 7665, error lines: 0
2022/02/08 09:52:02 [INFO] statsmgr.go:62: Done(/home/zh/graph_data/email_edge.csv): Time(0.07s), Finished(8178), Failed(0), Read Failed(0), Latency AVG(4782us), Batches Req AVG(5171us), Rows AVG(113933.45/s)
2022/02/08 09:52:03 [INFO] reader.go:180: Total lines of file(/home/zh/graph_data/email_vertex.csv) is: 7945, error lines: 0
2022/02/08 09:52:03 [INFO] statsmgr.go:62: Done(/home/zh/graph_data/email_vertex.csv): Time(1.05s), Finished(16123), Failed(0), Read Failed(0), Latency AVG(8414us), Batches Req AVG(9121us), Rows AVG(15358.20/s)
2022/02/08 09:52:03 Finish import data, consume time: 1.55s
2022/02/08 09:52:04 --- END OF NEBULA IMPORTER ---

下面的是config.yaml文件,srcVID和dstVID可指定也可不指定都能导入,

  - path: /home/zh/graph_data/email_edge.csv
    failDataPath: ./err/edge.csv
    batchSize: 100
    type: csv
    csv:
      withHeader: false
      withLabel: false
    schema:
      type: edge
      edge:
        name: send_relation
        withRanking: false
        srcVID:
           type: int
           index: 0
        dstVID:
           type: int
           index: 1

你用的啥语句

create edge index send_relation_index on send_relation();
rebuild edge index send_relation_index;
match ()-[e:send_relation]->() return e;

:thinking: 老哥,可以再帮忙看看 SHOW STATS 的结果吗

先执行 SUBMIT JOB STATS,然后会得到一个 JOB ID,然后你再 SHOW JOB 具体ID数值,看 JOB 完成了没,然后再 SHOW STATS,看下现在数据库里的数据。sorry 啊,昨天脑子不大好,应该先让你看看数据库里的数据有多少的

会过滤重边

1 个赞

看了下数据插入了也是327条,下面的老哥说数据会过滤重边,我对csv文件去重后确实只剩下327条,终于明白了!多谢! 那我后面要是想用PageRank去计算的话,是不是需要将重复的边数设置为边的rank值呢?

明白了,确实处理数据的时候没考虑会有重边的问题

:thinking: 比如我发送了 2 次信息给你,就是 rank 2 对吗

是这个意思,我想设为边的权重,不知道是否可行

:thinking: 本身来说 rank 是来区分两个点之间的多条同类型边关系的,只是我有个困惑点,你如果计数了发送次数,会不会有第几次发送发生什么时候的需求。

不过我没有实操经验,@wey 你咋看这个处理方式。

暂时没有太复杂的需求,因为我也是刚接触图计算这块,现在想做一些简单社交场景分析,需要用nebula存储,想把发送次数当做权重来看,我是设为rank值好还是新增一列属性来存储好?目前对这个rank值有些迷惑

nebula 里边是有四元组决定的:src,dst,type,rank,增加rank因素就为了增加两点之间同类边的实体格式提供可能(想一下边是“交易”,显然两个实体间可以有多个交易,没有rank,这个关系只能通过把交易建模为点,用(src)–(交易)–(dst) 这样多一个点,俩边去表示这个含义,比较昂贵一些)

pagerank 描述的是点的重要性,应该是点中的属性。

了解!

如果你觉得上面 wey 的哪条回复解决了你的问题,可以勾选它为解决方案哈

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。