试用nebulagraph

按照手册的快速入门,本地部署操作,基本没什么问题。有一些注意事项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.confnebula-metad.confnebula-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文件的分隔符,用“,”作为分隔符的时候,如果属性里有“,”,需要把整个用双引号括起来CSV格式特殊字符转义处理_csv转义字符-CSDN博客
      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>

显示这个应该就是成功了

检索实验

为了测试,把文件改了,两个天体顶点,在属性v.name里,有两个取值,用英文逗号分隔,看看检索的时候,用CONTAINS就可以通过检索一个值找到这个顶点

当前的csv文件

检索属性中含有“火星”字段的顶点,

 > MATCH (v) \
-> WITH v, properties(v) as props, keys(properties(v)) as kk \
-> WHERE [i in kk where props[i] CONTAINS "火星"] \
-> RETURN v;

得到结果

OK成功!

TODO

接下来要看真实数据去了,真实数据很大,应该要用到集群部署,单机怕是不够了。感觉集群部署又是很多坑。唉。

WithHeader功能

今天测试了一下真实数据和WithHeader功能。有表头配置说明 - NebulaGraph Database 手册 (nebula-graph.com.cn)

tag:observed_region_withheader,第一行是表头,直接在csv文件里配置好了,就不用在yaml配置文件里配置了。

数据文件是这样的

还是第一列是vid,表头写成 :VID(string)

第二列开始是属性,用 tagname.property: 数据类型 的形式,例如我这里第二列是name,表头就是 observed_region_wither.name: string

然后是yaml配置文件中

csv.withHeader参数设置为true,tag.id表示VID,还是定义index: 0,即用第一列作为VID,就可以了

目前的yaml配置文件,记录一下

client:
  version: v3
  address: "172.17.0.2:9669"
  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:
  spaceName: import_observed_region_withheader_test
  batch: 128
  readerConcurrency: 50
  importerConcurrency: 512
  statsInterval: 10s
  hooks:
    before:
      - statements:
        - |
            DROP SPACE IF EXISTS import_observed_region_withheader_test;
            CREATE SPACE IF NOT EXISTS import_observed_region_withheader_test(vid_type=FIXED_STRING(50));
            USE import_observed_region_withheader_test;
            CREATE TAG IF NOT EXISTS observed_region_withheader(name string, alias string);
        wait: 10s
    after:
      - statements:
          - |
            SHOW SPACES;
log:
  level: INFO
  console: true
  files:
    - /usr/local/nebula/logs/nebula-importer.log
sources:
  - path: /home/nebulagraph/SearchData_Mars_Solar/vertex/observed_region_withheader.csv
    batch: 256
    csv:
      delimiter: ","

      withHeader: true
      lazyQuotes: false
    tags:
    - name: observed_region_withheader
#      mode: INSERT
#      filter:
#        expr: Record[1] == "XXX"
      id:
        type: "STRING"
#        #function: "hash"
        index: 0

        #concatItems:
        # - object_
        # - 0
        # - _id
      props:
        - name: "name"
          type: "STRING"
          index: 1
        - name: "alias"
          type: "STRING"
          index: 2

插入边和边的检索(withheader)

在csv文件中定义,测试的边是观测台站的载荷,"Observation_Carry_Instrument",没有属性,如果边有属性的话就在后面加一列属性,edgename.propertyname: 数据类型,即可。当前的csv文件是

第一列是 source的VID :SRC_VID(string),第二列是destination的VID :DST_VID(string)

然后在yaml配置文件中,定义schema,先要创建边

  • 在manager.hooks.before.statements里加上CREATE EDGE IF NOT EXISTS Observation_Carry_Instrument();
  • 在sources里加上边

- path: /home/nebulagraph/SearchData_Mars_Solar/edge_withheader/Observation_Carry_Instrument_withheader.csv
    batch: 256
    edges:
    - name: Observation_Carry_Instrument
      src:
        id:
          type: "STRING"
          index: 0

好了以后可以测试一下检索,检索observation这个tag下所有点的所有边

> MATCH (v: observation) -[e]->() RETURN e

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值