Janusgraph数据批量导入
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()