欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Janusgraph数据批量导入

程序员文章站 2022-06-11 13:28:27
...

Janusgraph数据批量导入其实很简单,Janusgraph自带了一个批量导入的教程就在下面这个文件里
janusgraph-0.3.3-hadoop2/data/grateful-dead-janusgraph-schema.groovy

说一下导入的大致流程
一:创建图架构
二:创建Json格式数据文件
三:配置存储Janusgraph的后端数据库Hbase
四:指定Json数据的文件路径

下面以Janusgraph自带的数据讲解具体讲解批量导入流程

一:创建图架构
Janusgraph自带的图架构在janusgraph-0.3.3-hadoop2/data/grateful-dead-janusgraph-schema.groovy
图架构就是定义你这张图的轮廓的

def defineGratefulDeadSchema(janusGraph) {
	// 创建图构架
    m = janusGraph.openManagement()
    
   // 创建顶点标签
    artist = m.makeVertexLabel("artist").make()
    song   = m.makeVertexLabel("song").make()
    
   // 创建边标签
    sungBy     = m.makeEdgeLabel("sungBy").make()
    writtenBy  = m.makeEdgeLabel("writtenBy").make()
    followedBy = m.makeEdgeLabel("followedBy").make()
    
   // 创建标签属性,第一个参数是属性名,第二个参数是属性的数据类型
    blid         = m.makePropertyKey("bulkLoader.vertex.id").dataType(Long.class).make()
    name         = m.makePropertyKey("name").dataType(String.class).make()
    songType     = m.makePropertyKey("songType").dataType(String.class).make()
    performances = m.makePropertyKey("performances").dataType(Integer.class).make()
    weight       = m.makePropertyKey("weight").dataType(Integer.class).make()
    
    //创建标签属性索引 ?这个参数具体是什么记得不太清了
    m.buildIndex("byBulkLoaderVertexId", Vertex.class).addKey(blid).buildCompositeIndex()
    m.buildIndex("artistsByName", Vertex.class).addKey(name).indexOnly(artist).buildCompositeIndex()
    m.buildIndex("songsByName", Vertex.class).addKey(name).indexOnly(song).buildCompositeIndex()
    
    // 给边添加索引
    // buildEdgeIndex的参数 
    // 第一个参数是边的标签 
    //第二个参数是索引名 
    // 第三个参数是边的方向(BOTH表示可以使用IN/OUT) 
    //第四个参数是索引的排序(Order升序)
    m.buildEdgeIndex(followedBy, "followedByWeight", Direction.BOTH, Order.decr, weight)

	//提交数据
    m.commit()
}

二:创建Json格式数据文件
Janusgraph自带的Json数据在janusgraph-0.3.3-hadoop2/data/grateful-dead.json,这个Json数据格式是符合上面的图架构的,这个格式看一下就好了,很简单。

三:配置存储Janusgraph的后端数据库Hbase
Janusgraph自带的配置文件在janusgraph-0.3.3-hadoop2/conf/janusgraph-hbase.properties

说一下几个重要的参数:
1.storage.backend=hbase
将Janusgraph批量导入的数据存入到Hbase中

2.storage.hostname=127.0.0.1
安装Hbase的电脑ip

1.storage.batch-loading=true
true:在批量导入或api添加时,会进行(索引)一致性校验,否则不会进行
如在name属性上建立了唯一索引,则name不允许有重复值。

2.storage.hbase.table=testgraph
存储图的名称

四.指定Json数据的文件路径
Janusgraph自带的配置文件在janusgraph-0.3.3-hadoop2/conf/hadoop-graph/hadoop-graphson.properties

这个文件只需要配置一下你要导入的Json数据路径即可:
gremlin.hadoop.inputLocation=./data/grateful-dead.json
把这个位置换成你自己的文件路径

五.打开Janusgrap执行导入命令
1.加载构建图的函数文件,load后面是图构架函数文件的地址
:load data/grateful-dead-janusgraph-schema.groovy

2.加载janusgraph的后端存储文件,将上述的图构架存加载到hbase中,open里的参数是hbase的配置文件地址
graph = JanusGraphFactory.open(‘conf/janusgraph-hbase-es.properties’)

3.将图构架存储到hbase中
defineGratefulDeadSchema(graph)

4.打开json数据,open里的参数是json数据的位置
graph = GraphFactory.open(“conf/hadoop-graph/hadoop-load-json-hbase-es.properties”)

5.提交json数据
graph.compute(SparkGraphComputer).program(blvp).submit().get()