入门第一课是在IDEA里建立一个项目,有些小曲折。这里运行的Demo是读取janusgraph示例的“神之图”(Graph of the Gods)数据并打印,采用Hbase+ES组合,JanusGraph版本是0.4.0,诸位可参考如下开始janusgraph的调用之旅~java
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-core</artifactId>
<version>0.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>gremlin-driver</artifactId>
<version>3.4.1</version>
</dependency>
复制代码
2019-09-14补充一下【Demo源码】注:使用JanusGraph Embedded访问方式,也就是嵌入式apache
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.janusgraph.core.JanusGraph;
import org.janusgraph.core.JanusGraphFactory;
import java.util.List;
public class JanusConnect {
public static void main(String[] args) throws Exception {
//graph可类比Spark里的SparkSession对象,一个统一访问的入口
JanusGraph graph = JanusGraphFactory.build()
.set("storage.backend", "hbase")
.set("storage.hostname", "10.110.120.1,10.110.120.2,10.110.120.3")
.set("index.search.backend", "elasticsearch")
.set("storage.hbase.table", "testgraph") //表中已有数据
.set("index.search.hostname", "10.110.120.1,10.110.120.2,10.110.120.3")
.open();
GraphTraversalSource g = graph.traversal();
//【next()检索顶点,第一个action操做自动启动事务,有点相似Spark的Action算子的做用了】若是末尾不加next就添加不成功
// g.addV("person").property("name", "John").next();
// g.addV("person").property("name", "Snow").next();
// g.addV("person").property("name", "Erya").next();
// g.tx().commit();
System.out.println("Vertex count = " + g.V().count().next());
System.out.println("Edges count = " + g.E().count().next());
System.out.println("++++++++图结构+++++++++" + graph.openManagement().printSchema());
List<Vertex> ls = g.V().has("name").toList();
for (Vertex v : ls) {
System.out.println("标签是======" + v.label() + "======名字是:" + v.value("name"));
}
g.close();
graph.close();
}
}
复制代码
Exception in thread "main" java.lang.IllegalArgumentException: Could not find implementation class: org.janusgraph.diskstorage.hbase.HBaseStoreManager
Caused by: java.lang.ClassNotFoundException: org.janusgraph.diskstorage.hbase.HBaseStoreManager
复制代码
个人demo里的存储后端是HBase,因janusgraph-core缺乏相应的类包致使!后端
pom.xml添加:bash
<dependency>
<groupId>org.janusgraph</groupId>
<artifactId>janusgraph-all</artifactId>
<version>0.4.0</version>
</dependency>
复制代码
Exception in thread "main" java.lang.IllegalArgumentException: Could not instantiate implementation: org.janusgraph.diskstorage.es.ElasticSearchIndex
Caused by: java.lang.ClassNotFoundException: org.apache.http.concurrent.FutureCallback
复制代码
索引后端是ES,缺乏http相关类,继续在pom.xml文件中添加:elasticsearch
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>
复制代码
继续执行demo,已经能够成功运行。post
部分查询输出:学习
标签是============monster========名字是:hydra
10:45:51.997 [main] DEBUG o.j.d.hbase.HBaseKeyColumnValueStore - Generated HBase Filter ColumnRangeFilter [$, %)
标签是============god========名字是:jupiter
10:45:52.001 [main] DEBUG o.j.d.hbase.HBaseKeyColumnValueStore - Generated HBase Filter ColumnRangeFilter [$, %)
标签是============demigod========名字是:hercules
10:45:52.005 [main] DEBUG o.j.d.hbase.HBaseKeyColumnValueStore - Generated HBase Filter ColumnRangeFilter [$, %)
标签是============god========名字是:pluto
10:45:52.011 [main] DEBUG o.j.d.hbase.HBaseKeyColumnValueStore - Generated HBase Filter ColumnRangeFilter [$, %)
标签是============monster========名字是:cerberus
复制代码
归档:【JanusGraph学习笔记】ui