JanusGraph-Import

JanusGraph-Import

janusgraph是一个强大的分布式开源图数据库,但是没有导入数据的方法,要想导入数据你可能有以下选择:

  1. 导入顶点,然后查询边对应的顶点并插入边。
  2. 导入顶点,记下顶点id,然后和边join,直接用id插入边
  3. 使用我提供的方法

假如有以下数据:

VertexLable : USER, ITEM (用户,商品)
EdgeLabel :USER_ITEM (用户购买商品表)

USER :
userid, phone, name, gender, age
123456, 17781818181, Mike, Male, 30

ITEM:
itemid, price, salecount, category
100,100,100, drinking

USERID_ITEM:
userid, itemid, date, address
123456,123,2018-01-01,China

假如有 1 billion 的订单,10 billion 的边(十亿用户和商品,100以交易记录,比较符合淘宝的数据量)

分别使用上面的三种办法所需时间为:大于10天,2天,8个小时。所需要的资源量:很少(因为可以一条一条插入),很多(因为要join),比较多(需要批量导入)

所以如果是生成环境下,推荐大家使用我提供的方法,源码地址:
https://github.com/dengziming/janusgraph-util

使用方法,例如 GraphOfTheGodsFactory 中的数据,我们可以创建对应的顶点和边文件,文件放在 resources 目录下,然后打jar包,然后使用java命令:

java -cp janusgraph.util.batchimport.unsafe.BulkLoad
--into /Users/dengziming/opt/soft/neo4j-community-3.3.3/data/databases/all2018701.db \
--janus-config-file janusgraph.properties \
--skip-duplicate-nodes true \
--skip-bad-relationships true \
--ignore-extra-columns true \
--ignore-empty-strings true \
--bad-tolerance 10000000 \
--processors 1 \
--id-type string \
--max-memory 2G \
--drop-keyspace-if-exists true \
--nodes:titan /Users/dengziming/opt/data/tmp/v_titan.csv \
--nodes:location /Users/dengziming/opt/data/tmp/v_location.csv \
--nodes:god /Users/dengziming/opt/data/tmp/v_god.csv \
--nodes:demigod /Users/dengziming/opt/data/tmp/v_demigod.csv \
--nodes:human /Users/dengziming/opt/data/tmp/v_human.csv \
--nodes:monster /Users/dengziming/opt/data/tmp/v_monster.csv \
--edges:father /Users/dengziming/opt/data/tmp/e_god_titan_father.csv \
--edges:father /Users/dengziming/opt/data/tmp/e_demigod_god_father.csv \
--edges:mother /Users/dengziming/opt/data/tmp/e_demigod_human_mother.csv \
--edges:lives /Users/dengziming/opt/data/tmp/e_god_location_lives.csv \
--edges:lives /Users/dengziming/opt/data/tmp/e_monster_location_lives.csv \
--edges:brother /Users/dengziming/opt/data/tmp/e_god_god_brother.csv \
--edges:battled /Users/dengziming/opt/data/tmp/e_demigod_monster_battled.csv \
--edges:pet /Users/dengziming/opt/data/tmp/e_god_monster_pet.csv 

其中 janusgraph.properties 是janusgraph 的配置文件,你也可以使用别的方式进行传,–into 指定一个临时存数据的文件,需要删掉。

执行过程会不断打日志,可以观察进度。
经过测试,100 亿数据需要8个小时左右,和服务器性能相关,后续我会不断进行优化。
觉得好用 start 一下啊

你可能感兴趣的:(opensource)