Nebula Importer

    Importer适用于将本地CSV文件的内容导入至Nebula Graph中。

    优势

    • 轻量快捷:不需要复杂环境即可使用,快速导入数据。

    • 灵活筛选:通过配置文件可以实现对CSV文件数据的灵活筛选。

    在使用Nebula Importer之前,请确保:

    • 已部署Nebula Graph服务。目前有三种部署方式:

    • Nebula Graph中已创建Schema,包括图空间、Tag和Edge type,或者通过参数设置。

    • 运行Importer的机器已部署Golang环境。详情请参见Golang 环境搭建

    操作步骤

    配置yaml文件并准备好待导入的CSV文件,即可使用本工具向Nebula Graph批量写入数据。

    1. 克隆仓库。

      Note

      • Nebula Importer v1分支只能连接Nebula Graph 1.x。
      • Nebula Importer master分支和v2分支可以连接Nebula Graph 2.x。
    2. 进入目录nebula-importer

      1. $ cd nebula-importer
    3. 编译源码。

      1. $ make build
    4. 启动服务。

      1. $ ./nebula-importer --config <yaml_config_file_path>

      Note

      yaml配置文件说明请参见配置文件

    无网络编译方式

    如果服务器不能联网,建议在能联网的机器上将源码和各种依赖打包上传到对应的服务器上编译即可,操作步骤如下:

    1. 克隆仓库。

    2. 使用如下的命令下载并打包依赖的源码。

      1. $ go mod vendor
      2. $ cd .. && tar -zcvf nebula-importer.tar.gz nebula-importer
    3. 将压缩包上传到不能联网的服务器上。

    4. 解压并编译。

      1. $ tar -zxvf nebula-importer.tar.gz
      2. $ cd nebula-importer
      3. $ go build -mod vendor cmd/importer.go

    使用Docker可以不必在本地安装Go语言环境,只需要拉取Nebula Importer的镜像,并将本地配置文件和CSV数据文件挂载到容器中。命令如下:

    1. $ docker run --rm -ti \
    2. --network=host \
    3. -v <config_file>:<config_file> \
    4. -v <csv_data_dir>:<csv_data_dir> \
    5. vesoft/nebula-importer:<version>
    6. --config <config_file>
    • <config_file>:本地yaml配置文件的绝对路径。
    • <csv_data_dir>:本地CSV数据文件的绝对路径。
    • <version>:Nebula Graph 2.x请填写v2

    Note

    建议使用相对路径。如果使用本地绝对路径,请检查路径映射到Docker中的路径。

    基本配置

    示例配置如下:

    客户端配置存储客户端连接Nebula Graph相关的配置。

    示例配置如下:

    1. clientSettings:
    2. retry: 3
    3. concurrency: 10
    4. channelBufferSize: 128
    5. space: test
    6. connection:
    7. user: user
    8. password: password
    9. address: 192.168.11.13:9669,192.168.11.14:9669
    10. postStart:
    11. commands: |
    12. UPDATE CONFIGS storage:wal_ttl=3600;
    13. UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = true };
    14. afterPeriod: 8s
    15. preStop:
    16. commands: |
    17. UPDATE CONFIGS storage:wal_ttl=86400;
    18. UPDATE CONFIGS storage:rocksdb_column_family_options = { disable_auto_compactions = false };

    文件配置

    文件配置存储数据文件和日志的相关配置,以及Schema的具体信息。

    文件和日志配置

    示例配置如下:

    1. files:
    2. - path: ./student_without_header.csv
    3. failDataPath: ./err/studenterr.csv
    4. batchSize: 128
    5. limit: 10
    6. inOrder: false
    7. type: csv
    8. csv:
    9. withHeader: false
    10. withLabel: false
    11. delimiter: ","

    Schema配置

    Schema配置描述当前数据文件的Meta信息,Schema的类型分为点和边两类,可以同时配置多个点或边。

    • 点配置

    示例配置如下:

    1. schema:
    2. type: vertex
    3. vertex:
    4. vid:
    5. type: string
    6. index: 0
    7. tags:
    8. props:
    9. - name: name
    10. type: string
    11. index: 1
    12. - name: age
    13. type: int
    14. index: 2
    15. - name: gender
    16. type: string
    17. index: 3

    Note

    CSV文件中列的序号从0开始,即第一列的序号为0,第二列的序号为1。

    • 边配置

    示例配置如下:

    关于CSV文件表头(header)

    Importer根据CSV文件有无表头,需要对配置文件进行不同的设置,相关示例和说明请参见: