按照手册的快速入门,本地部署操作,基本没什么问题。有一些注意事项NebulaGraph Database 手册 (nebula-graph.com.cn)
默认安装路径在/usr/local/nebula
ip的问题
- 在步骤3的时候
$ ./nebula-console -addr <ip> -port <port> -u <username> -p <password>[-t 120] [-e "nGQL_statement" | -f filename.nGQL]
- 注意这里,-addr <ip>用本机的ip,-port <port>可以用默认的端口,graph的默认端口是9669,和配置文件中的一致,配置文件在安装路径的etc文件夹中
- 由于我是在容器中安装测试的nebulagraph,所以需要查看容器的ip地址,就得退出容器,在主服务器中运行
docker inspect <container_id> | grep IPAddress
- 其他的都用默认即可,例如,我打开nebula-console的命令是
./nebula-console -addr 172.17.0.2 -port 9669 -u root -p 12345678
修改配置文件
- 需要去修改配置文件,不然在步骤四注册Storage服务的时候会出错
- 修改nebula-graphd.conf、nebula-metad.conf、nebula-storaged.conf三个配置文件
- 三个配置文件类似,主要是把这两个ip改为本机ip
nebulagraph三个服务对应的端口号
- graph对应的默认端口号9669
- meta对应的默认端口号9559
- storage对应的默认端口号9779
然后增加storage主机,ip还是本机ip,记得端口号是9779
显示Status "ONLINE"就对了
Nebula-importer
接下来用nebula-importer从本机导入csv文件
我是用对应的二进制包安装的,nebulagraph的版本是3.6,对应下载的安装包版本是4.0Release NebulaGraph Importer 4.1.0 · vesoft-inc/nebula-importer (github.com)
然后直接用命令
dpkg -i <package_name>
默认安装路径在/usr/bin
然后要自己创建yaml配置文件,复制并修改官网上的配置文件内容使用 NebulaGraph Importer - NebulaGraph Database 手册 (nebula-graph.com.cn)
有几个地方需要注意:
Client
client:
version: v3
address: "172.17.0.2:9669" # 要改为自己的ip
user: root
password: 12345678 # 改为自己的用户名和密码
ssl:
enable: false
certPath: "/home/xxx/cert/importer.crt"
keyPath: "/home/xxx/cert/importer.key"
caPath: "/home/xxx/cert/root.crt"
insecureSkipVerify: false
concurrencyPerAddress: 10
reconnectInitialInterval: 1s
retry: 3
retryInitialInterval: 1s
manager
manager:
spaceName: mars_test_1 # 改为要创建的SPACE的名字
batch: 128
readerConcurrency: 50
importerConcurrency: 512
statsInterval: 10s
hooks:
before:
- statements:
- |
DROP SPACE IF EXISTS mars_test_1; # 改为要创建的SPACE的名字
CREATE SPACE IF NOT EXISTS mars_test_1(vid_type=FIXED_STRING(30)); # 改为要创建的SPACE的名字,并且vid_type要先指定,指定为String比较方便
USE mars_test_1; # 改为要创建的SPACE的名字
CREATE TAG IF NOT EXISTS observationobject(id string, name string); # 这里就是先创建了一个tag,然后csv文件对应的也是这个tag,csv文件里的内容是实体
这是对应的csv数据文件
# 在这里先定义好schema,就是创建好tag什么的,不知道直接在console里创建好行不行,但是为了方便统一,我还是直接在这里定义
wait: 10s
after:
- statements:
- |
SHOW SPACES;
log
log:
level: INFO
console: true
files:
- /usr/local/nebula/logs/nebula-importer.log # 需要自己创建
Source
sources:
- path: /home/nebulagraph/observationobject.csv # csv文件的位置
batch: 256
csv:
delimiter: "|" # csv文件的分隔符,也可以改为 ","
withHeader: false
lazyQuotes: false
tags:
- name: observationobject # tag的名字
# mode: INSERT
# filter:
# expr: Record[1] == "XXX"
id:
type: "STRING"
#function: "hash" #这是用哈希函数,这里如果用了哈希函数,输出就是int,如果这里要用哈希函数,那么在前面CREATE TAG的时候就要把vid设置为整数
index: 0 # 用什么作为vid,这里我直接用第一列作为vid
#concatItems:
#- person_
#- 0
#- _id
props: # 属性和前面的CREATE TAG那里对应
- name: "id"
type: "STRING"
index: 0
- name: "name"
type: "STRING"
index: 1
import数据
进入nebula-importer安装文件夹,运行
./nebula-importer --config <yaml file path>
显示这个就是成功了
检索实验
TODO
现在只有一个tag两个vertex,先试一下检索,成功了的话就说明import是成功的