知识图谱:【图数据库Nebula(五)】——Nebula Importer导入数据

文章目录

Step 1. 启动Nebula容器

docker run --rm -ti --network nebula-docker-compose_nebula-net --entrypoint=/bin/sh vesoft/nebula-console:v2.5.0

Step 2. 连接 Nebula Graph 服务器

nebula-console -u root -p 123456 --address=graphd --port=9669

Step 3. 通过nebula命令行创建图的Schema

DROP SPACE Graph500
CREATE SPACE Graph500(vid_type = FIXED_STRING(128))
USE Graph500
CREATE TAG ve(id int)
CREATE EDGE ed()

Step 4. 获取数据集

wget https://www.galaxybase.com/public/download/graph500.zip && unzip graph500.zip

Step 5. 将测试数据集移动到import目录下并删除表头

sed -i '1d' vertex.csv edge.csv

Step 6. 执行如下命令,等待导入完成

docker run --rm -ti -v /data/nlp/jx/nebula-docker-compose/import/graph500/graph500.yaml:/import/graph500/graph500.yaml -v /data/nlp/jx/nebula-docker-compose/import/graph500:/import/graph500/  vesoft/nebula-importer:v2 --config /import/graph500/graph500.yaml
=============================graph500.yaml=====================================
version: v2
description: g500d
removeTempFiles: false
clientSettings:
  retry: 3
  concurrency: 20
  channelBufferSize: 128
  space: Graph500
  connection:
    user: root
    password: 123456
    address: 10.6.16.96:9669
  postStart:
    commands: |
       DROP SPACE IF EXISTS Graph500;
       CREATE SPACE IF NOT EXISTS Graph500(vid_type = FIXED_STRING(128));
       USE Graph500;
       CREATE TAG ve(id int);
       CREATE EDGE ed();
    afterPeriod: 5s
  preStop:
     commands: |
logPath: ./err/g500d.log
files:
  - path: vertex.csv
    failDataPath: ./err/ve.csv
    batchSize: 2048
    inOrder: false
    type: csv
    csv:
      withHeader: false
      withLabel: false
      delimiter: "\t"
    schema:
      type: vertex
      vertex:
        vid:
          index: 0
	tags:
	          - name: ve
	            props:
	              - name: id
	                type: int
	                index: 0
  - path: edge.csv
    failDataPath: ./err/ed.csv
    batchSize: 2048
    inOrder: false
    type: csv
    csv:
      withHeader: false
      withLabel: false
      delimiter: "\t"
    schema:
      type: edge
      edge:
        name: ed
        srcVID:
          index: 0
        dstVID:
          index: 1
===============================================================================
==============================example.yaml==============================
# 连接的Nebula Graph版本,连接2.x时设置为v2
version: v2
description: example
# 是否删除临时生成的日志和错误数据文件。
removeTempFiles:false
clientSettings:
# nGQL语句执行失败的重试次数。
retry:3
# Nebula Graph客户端并发数。
  concurrency:10
# 每个Nebula Graph客户端的缓存队列大小。
  channelBufferSize:128
# 指定数据要导入的Nebula Graph图空间。
  space: student
# 连接信息。
  connection:
    user: root
    password: nebula
    address:192.168.11.13:9669
  postStart:
# 配置连接Nebula Graph服务器之后,在插入数据之前执行的一些操作。
    commands:|
      DROP SPACE IF EXISTS student;
      CREATE SPACE IF NOT EXISTS student(partition_num=5, replica_factor=1, vid_type=FIXED_STRING(20));
      USE student;
      CREATE TAG student(name string, age int,gender string);
      CREATE EDGE follow(degree int);
# 执行上述命令后到执行插入数据命令之间的间隔。
    afterPeriod:15s
  preStop:
# 配置断开Nebula Graph服务器连接之前执行的一些操作。
    commands:|
# 错误等日志信息输出的文件路径。    
logPath:./err/test.log
# CSV文件相关设置。
files:
# 数据文件的存放路径,如果使用相对路径,则会将路径和当前配置文件的目录拼接。本示例第一个数据文件为点的数据。
- path:./student_without_header.csv
# 插入失败的数据文件存放路径,以便后面补写数据。
    failDataPath:./err/studenterr.csv
# 单批次插入数据的语句数量。
    batchSize:10
# 读取数据的行数限制。
    limit:10
# 是否按顺序在文件中插入数据行。如果为false,可以避免数据倾斜导致的导入速率降低。
    inOrder:true
# 文件类型,当前仅支持csv。
    type: csv
    csv:
# 是否有表头。
      withHeader:false
# 是否有LABEL。
      withLabel:false
# 指定csv文件的分隔符。只支持一个字符的字符串分隔符。
      delimiter:","
    schema:
# Schema的类型,可选值为vertex和edge。
      type: vertex
      vertex:
# 点ID设置。
        vid:
# 点ID对应CSV文件中列的序号。CSV文件中列的序号从0开始。
           index:0
# 点ID的数据类型,可选值为int和string,分别对应Nebula Graph中的INT64和FIXED_STRING
           type:string
# Tag设置。   
        tags:
# Tag名称。
- name: student
# Tag内的属性设置。
            props:
# 属性名称。
- name: name
# 属性数据类型。
                type:string
# 属性对应CSV文件中列的序号。
                index:1
- name: age
                type:int
                index:2
- name: gender
                type:string
                index:3
# 本示例第二个数据文件为边的数据。
- path:./follow_without_header.csv
    failDataPath:./err/followerr.csv
    batchSize:10
    limit:10
    inOrder:true
    type: csv
    csv:
      withHeader:false
      withLabel:false
    schema:
# Schema的类型为edge。
      type: edge
      edge:
# Edge type名称。
        name: follow
# 是否包含rank。
        withRanking:true
# 起始点ID设置。
        srcVID:
# 数据类型。
           type:string
# 起始点ID对应CSV文件中列的序号。
           index:0
# 目的点ID设置。
        dstVID:
           type:string
           index:1
# rank设置。
        rank:
# rank值对应CSV文件中列的序号。如果没有设置index,请务必在第三列设置rank的值。之后的列依次设置各属性。
           index:2
# Edge type内的属性设置。
        props:
# 属性名称。
- name: degree
# 属性数据类型。
             type:double
# 属性对应CSV文件中列的序号。
             index:3
===============================================================================
上一篇:引擎入门 | 在创建月球登录游戏中学习并使用Unity 2D(1)


下一篇:Unity横版2D游戏学习实例(04)- 为角色添加动画&状态机&Blend Tree