JanusGraph学习笔记-问题与解决(总集)

这是一个JANUSGRAPH v0.4.0学习实践的填坑排错集锦,文末持续更新篇,欢迎收藏或一块儿贡献!java

遇到新问题的同窗能够在下方留言讨论。shell

E01. gremlin命令行能够查到,但在IDE中运行java程序查不到结果

问题背景:已实如今后台使用addV()添加一些顶点数据,后台控制台能够查到,但执行下面代码输出为~0。vim

代码示例

public static void main(String[] args) throws Exception {
        GraphTraversalSource graph = traversal()
                .withRemote(DriverRemoteConnection.using("my.host.com",8182,"g"));
      
        List<Vertex> ls = graph.V().has("name").toList();
        System.out.println("==="+graph.V().count().next());
        System.out.println("==="+graph.getGraph());
        for(Vertex v :ls){
            System.out.println("========="+v.label()+"=======");
        }
        graph.close();
}
复制代码

解决方案

在gremlin控制台添加顶点数据后,在java程序中查不到,结果为空,缘由是任何的图操做都会自动开启一个事务。若是事务没有提交,那么操做就不会生效。须要在gremlin控制台执行事务提交后才能查询到:bash

for (tx in graph.getOpenTransactions()) tx.commit()
复制代码

事务提交后便可在Java程序中查询刚才添加的数据。简单来讲就须要graph.tx().commit()服务器


E02. 远程链接GremlinServer,报错源[g]别名未在服务器上配置

错误信息:The traversal source [g] for alias [g] is not configured on the server.curl

代码示例

同上,据称ES没有正常运行也会遇到这个错误。elasticsearch

解决方案

修改配置文件oop

vim janusgraph-hbase-es.properties
复制代码

在文件末尾添加以下配置:post

gremlin.graph=org.janusgraph.core.JanusGraphFactory
复制代码

保存后重启GremlinServer服务器,命令以下学习

/path_to_janus/janusgraph-0.4.0-hadoop2/bin/gremlin-server.sh  stop  /path_to_janus/conf/janusgraph-hbase-es.properties
/path_to_janus/janusgraph-0.4.0-hadoop2/bin/gremlin-server.sh  start  /path_to_janus/conf/janusgraph-hbase-es.properties
复制代码

java程序便可远程链接GremlinServer,查询数据无误。

E03. java.lang.IllegalArgumentException: Could not instantiate implementation: org.janusgraph.diskstorage.es.ElasticSearchIndex

错误信息:Caused by: java.lang.reflect.InvocationTargetException

在Gremlin命令行建立graph时报错java.lang.IllegalArgumentException: Could not instantiate implementation: org.janusgraph.diskstorage.es.ElasticSearchIndex

注:这在IDEA项目里用java代码访问JanusGraph时也会报一样的错,以前解决办法参考JanusGraph入门第一课:建立IDEA项目,但错误的缘由并不同,代码没有改动却报这个错误,这和E06很像,是同类型的错误。排查以下:

执行的代码示例

gremlin> graph = JanusGraphFactory.open('/opt/janusgraph/conf/janusgraph-hbase-es.properties')
复制代码

解决方案

curl http://localhost:9200检查相应正常。但不管如何修改httpclient依赖包仍是报错。经排查发现此时elasticsearch服务状态是red(因昨晚服务器所有掉电的缘故),将es的状态恢复到green以后,再次执行代码,直接就行了。随后用java代码读取数据一切正常。

能够看到:standardjanusgraph巴拉巴拉……

找了很久,总算解决了。【2019-09-15更新】

JanusGraph问题与解决系列目录:

JanusGraph问题笔记(二)-SchemaViolationException

JanusGraph问题笔记(三):NoNodeException(hbase)

JanusGraph问题笔记(四):ResponseException(ES)


相关专栏:

JanusGraph入门第一课:建立IDEA项目

相关文章
相关标签/搜索