【NebulaGraph】Nebula Importer使用
Nebula Importer使用
- 1. 什么是Nebula Importer
- 2. 通过docker安装
- 3. 开始使用
1. 什么是Nebula Importer
NebulaGraph Importer(简称 Importer)是一款 NebulaGraph 的 CSV 文件单机导入工具,可以读取并批量导入多种数据源的 CSV 文件数据,还支持批量更新和删除操作。
- 支持多种数据源,包括本地、S3、OSS、HDFS、FTP、SFTP、GCS。
- 支持导入 CSV 格式文件的数据。单个文件内可以包含多种 Tag、多种 Edge type 或者二者混合的数据。
- 支持过滤数据源数据。
- 支持批量操作,包括导入、更新、删除。
- 支持同时连接多个 Graph 服务进行导入并且动态负载均衡。
- 支持失败后重连、重试。
- 支持多维度显示统计信息,包括导入时间、导入百分比等。统计信息支持打印在 Console 或日志中。
- 支持 SSL 加密。
官网文档:https://docs.nebula-graph.com.cn/3.8.0/import-export/use-importer/
2. 通过docker安装
通过docker安装的好处:使用 Docker 可以不必在本地安装 Go 语言环境,只需要拉取 NebulaGraph Importer 的镜像,并将本地配置文件和 CSV 数据文件挂载到容器中。
(base) ➜ ~ docker pull vesoft/nebula-importer:v4
v4: Pulling from vesoft/nebula-importer
579b34f0a95b: Pull complete
c4b56e96473f: Pull complete
55670df56cf0: Pull complete
Digest: sha256:088e152808e4c8982c03e08f5c46c468a4aab8e080542da3a62ac1f8493d81a6
Status: Downloaded newer image for vesoft/nebula-importer:v4
docker.io/vesoft/nebula-importer:v4What's next:View a summary of image vulnerabilities and recommendations → docker scout quickview vesoft/nebula-importer:v4
部分历史版本
3. 开始使用
前提条件
- 部署了 NebulaGraph 服务
- 准备 CSV 文件
- 官方给出的run的命令
$ docker run --rm -ti \--network=host \-v <config_file>:<config_file> \-v <data_dir>:<data_dir> \vesoft/nebula-importer:<version> \--config <config_file>
<config_file>
:填写 YAML 配置文件的绝对路径。
<data_dir>
:填写 CSV 数据文件的绝对路径。如果文件不在本地,请忽略该参数。
<version>
:填写 Importer 的版本号,请填写v4。
官方示例:
# 拉取镜像
docker pull vesoft/nebula-importer:v4# 运行容器导入数据
docker run --rm -ti \--network=host \-v /home/user/config.yaml:/home/user/config.yaml \-v /home/user/data:/home/user/data \vesoft/nebula-importer:v4 \--config /home/user/config.yaml
运行容器时的选项:
参数 | 含义 |
---|---|
--rm | 容器运行结束后自动删除(不保留) |
-t | 分配一个伪终端(tty),方便交互和日志输出 |
-i | 保持标准输入打开(interactive 模式) |
合起来 -ti | 方便你实时查看导入进度和日志输出 |
--network=host
让容器与宿主机共享网络环境。- 使用 --network=host 后,Nebula Importer 可以直接访问 graphd 的地址,如:
address: 127.0.0.1:9669
- 否则(没有 --network=host),需要用宿主机真实 IP。
- ⚠️ 注意:–network=host 在 macOS / Windows 下的 Docker Desktop 不完全生效,推荐在 Linux 环境使用。
-v /home/user/config.yaml:/home/user/config.yaml
挂载配置文件。
左侧 | 右侧 | 含义 |
---|---|---|
/home/user/config.yaml | /home/user/config.yaml | 将宿主机的配置文件挂载进容器,使容器能读取它。 |
-
-v <宿主机路径>:<容器内路径>
-
-v /home/user/data:/home/user/data
挂载数据目录。 -
vesoft/nebula-importer:v4
指定要运行的镜像。 -
--config /home/user/config.yaml
告诉 Nebula Importer 使用哪份配置文件。
docker run --rm -ti \--network=host \-v /Users/fanzhen/nebula-graph-config/config.yaml:/root/config.yaml \-v /Users/fanzhen/nebula-graph-data:/root/data \vesoft/nebula-importer:v4 \--config /root/config.yaml
config文件
# macosclientSettings:connection:user: rootpassword: nebulaaddress: host.docker.internal:9669 space: your_space_name
创建space
# Create Space
CREATE SPACE `basketballplayer` (partition_num = 10, replica_factor = 1, charset = utf8, collate = utf8_bin, vid_type = FIXED_STRING(32));
:sleep 20;
USE `basketballplayer`;# Create Tag:
CREATE TAG `player` ( `name` string NULL, `age` int64 NULL) ttl_duration = 0, ttl_col = "";
CREATE TAG `team` ( `name` string NULL) ttl_duration = 0, ttl_col = "";# Create Edge:
CREATE EDGE `follow` ( `degree` int64 NULL) ttl_duration = 0, ttl_col = "";
CREATE EDGE `serve` ( `start_year` int64 NULL, `end_year` int64 NULL) ttl_duration = 0, ttl_col = "";
:sleep 20;# Create Index:
CREATE TAG INDEX `i_player_age` ON `player` ( `age`);
CREATE TAG INDEX `player_index_1` ON `player` ( `name`(20));