"Undefined Type Used in Query" using GraphComputer


"John J. Szucs" <john....@...>
 

Using JanusGraph 0.2.0 with Java, I have a simple traversal like this to get the neighborhood of a vertex:

Iterator<Vertex> neighbors=graph.traversal().V(vertexId).bothE(edgeLabels).otherV().dedup();

vertexId is the ID of the vertex of interest and edgeLabels are edge labels of interest (not all edge labels contribute to this view of the vertex's neighborhood).

When run as-is above, this works perfectly. However, in the interest of performance, I wanted to try using a GraphComputer, because the real graph has some vertices with on the order of one million neighbors.

If I simply add withComputer() after traversal(), like this, the query throws a series of exceptions.

Iterator<Vertex> neighbors=graph.traversal().withComputer().V(vertexId).bothE(edgeLabels).otherV().dedup();

The exceptions are similar to this:

2018-02-09 12:46:22.541 ERROR [o.j.d.k.s.StandardScannerExecutor       ] - Exception processing row [ 24-  0-  0-  0-  0-  0-  0-128]:  java.lang.IllegalArgumentException: Undefined type used in query: gremlin.traversalVertexProgram.haltedTraversers
    at org.janusgraph.graphdb.query.QueryUtil.getType(QueryUtil.java:63)
 
I am still somewhat new to Gremlin, but have extensive experience with Blueprints. Is my assumption that I can "automagically" benefit from Gremlin OLAP simply by adding withComputer() to an existing traversal (subject to the caveats in the documentation) incorrect? Am I doing something else?

Thanks in advance!

-- John J. Szucs


HadoopMarc <bi...@...>
 

Hi John,

In short,
  • use withComputer(SparkGraphComputer.class)
  • take conf/hadoop-graph/read-hbase.properties or conf/hadoop-graph/read-cassandra3.properties as an example

The withComputer() without SparkGraphComputer is merely to force a breadth-first search, but does not introduce any parallellism (in this syntax). Therefore, I guess it is neither tested for JanusGraph nor needed.


If you do not use HBase or Cassandra as a storage backend you will have to export your data and use the ScriptInputFormat of TinkerPop's HadoopGraph.


Also OLAP might have problems with your supernodes if it would cause an uneven distribution of work over the Spark executors.


HTH,     Marc



Op vrijdag 9 februari 2018 18:52:04 UTC+1 schreef John J. Szucs:

Using JanusGraph 0.2.0 with Java, I have a simple traversal like this to get the neighborhood of a vertex:

Iterator<Vertex> neighbors=graph.traversal().V(vertexId).bothE(edgeLabels).otherV().dedup();

vertexId is the ID of the vertex of interest and edgeLabels are edge labels of interest (not all edge labels contribute to this view of the vertex's neighborhood).

When run as-is above, this works perfectly. However, in the interest of performance, I wanted to try using a GraphComputer, because the real graph has some vertices with on the order of one million neighbors.

If I simply add withComputer() after traversal(), like this, the query throws a series of exceptions.

Iterator<Vertex> neighbors=graph.traversal().withComputer().V(vertexId).bothE(edgeLabels).otherV().dedup();

The exceptions are similar to this:

2018-02-09 12:46:22.541 ERROR [o.j.d.k.s.StandardScannerExecutor       ] - Exception processing row [ 24-  0-  0-  0-  0-  0-  0-128]:  java.lang.IllegalArgumentException: Undefined type used in query: gremlin.traversalVertexProgram.haltedTraversers
    at org.janusgraph.graphdb.query.QueryUtil.getType(QueryUtil.java:63)
 
I am still somewhat new to Gremlin, but have extensive experience with Blueprints. Is my assumption that I can "automagically" benefit from Gremlin OLAP simply by adding withComputer() to an existing traversal (subject to the caveats in the documentation) incorrect? Am I doing something else?

Thanks in advance!

-- John J. Szucs


"John J. Szucs" <john....@...>
 

Marc,

I had expected that SparkGraphComputer was in my future. Apparently, it's just going to be sooner than I anticipated.

Thanks for the help!

-- John

On Friday, February 9, 2018 at 2:50:36 PM UTC-5, HadoopMarc wrote:
Hi John,

In short,
  • use withComputer(SparkGraphComputer.class)
  • take conf/hadoop-graph/read-hbase.properties or conf/hadoop-graph/read-cassandra3.properties as an example

The withComputer() without SparkGraphComputer is merely to force a breadth-first search, but does not introduce any parallellism (in this syntax). Therefore, I guess it is neither tested for JanusGraph nor needed.


If you do not use HBase or Cassandra as a storage backend you will have to export your data and use the ScriptInputFormat of TinkerPop's HadoopGraph.


Also OLAP might have problems with your supernodes if it would cause an uneven distribution of work over the Spark executors.


HTH,     Marc



Op vrijdag 9 februari 2018 18:52:04 UTC+1 schreef John J. Szucs:
Using JanusGraph 0.2.0 with Java, I have a simple traversal like this to get the neighborhood of a vertex:

Iterator<Vertex> neighbors=graph.traversal().V(vertexId).bothE(edgeLabels).otherV().dedup();

vertexId is the ID of the vertex of interest and edgeLabels are edge labels of interest (not all edge labels contribute to this view of the vertex's neighborhood).

When run as-is above, this works perfectly. However, in the interest of performance, I wanted to try using a GraphComputer, because the real graph has some vertices with on the order of one million neighbors.

If I simply add withComputer() after traversal(), like this, the query throws a series of exceptions.

Iterator<Vertex> neighbors=graph.traversal().withComputer().V(vertexId).bothE(edgeLabels).otherV().dedup();

The exceptions are similar to this:

2018-02-09 12:46:22.541 ERROR [o.j.d.k.s.StandardScannerExecutor       ] - Exception processing row [ 24-  0-  0-  0-  0-  0-  0-128]:  java.lang.IllegalArgumentException: Undefined type used in query: gremlin.traversalVertexProgram.haltedTraversers
    at org.janusgraph.graphdb.query.QueryUtil.getType(QueryUtil.java:63)
 
I am still somewhat new to Gremlin, but have extensive experience with Blueprints. Is my assumption that I can "automagically" benefit from Gremlin OLAP simply by adding withComputer() to an existing traversal (subject to the caveats in the documentation) incorrect? Am I doing something else?

Thanks in advance!

-- John J. Szucs


王Xiaoxi <xiao...@...>
 

Hi John,

I have encountered the same trouble. If there any solution to solve the ERROR [o.j.d.k.s.StandardScannerExecutor]? And why it happened? 

Thanks for any suggestions

On Saturday, February 10, 2018 at 1:52:04 AM UTC+8 jo...@... wrote:
Using JanusGraph 0.2.0 with Java, I have a simple traversal like this to get the neighborhood of a vertex:

Iterator<Vertex> neighbors=graph.traversal().V(vertexId).bothE(edgeLabels).otherV().dedup();

vertexId is the ID of the vertex of interest and edgeLabels are edge labels of interest (not all edge labels contribute to this view of the vertex's neighborhood).

When run as-is above, this works perfectly. However, in the interest of performance, I wanted to try using a GraphComputer, because the real graph has some vertices with on the order of one million neighbors.

If I simply add withComputer() after traversal(), like this, the query throws a series of exceptions.

Iterator<Vertex> neighbors=graph.traversal().withComputer().V(vertexId).bothE(edgeLabels).otherV().dedup();

The exceptions are similar to this:

2018-02-09 12:46:22.541 ERROR [o.j.d.k.s.StandardScannerExecutor       ] - Exception processing row [ 24-  0-  0-  0-  0-  0-  0-128]:  java.lang.IllegalArgumentException: Undefined type used in query: gremlin.traversalVertexProgram.haltedTraversers
    at org.janusgraph.graphdb.query.QueryUtil.getType(QueryUtil.java:63)
 
I am still somewhat new to Gremlin, but have extensive experience with Blueprints. Is my assumption that I can "automagically" benefit from Gremlin OLAP simply by adding withComputer() to an existing traversal (subject to the caveats in the documentation) incorrect? Am I doing something else?

Thanks in advance!

-- John J. Szucs


HadoopMarc <bi...@...>
 

Hi Xiao,
Can you please describe in more detail what you have attempted to accomplish and provide a complete stacktrace. You can start a new question/thread, unless it is very clear that your issue is the same as in the current thread.

Best wishes,    Marc

Op donderdag 24 september 2020 om 14:08:24 UTC+2 schreef xi...@...:

Hi John,

I have encountered the same trouble. If there any solution to solve the ERROR [o.j.d.k.s.StandardScannerExecutor]? And why it happened? 

Thanks for any suggestions
On Saturday, February 10, 2018 at 1:52:04 AM UTC+8 jo...@... wrote:
Using JanusGraph 0.2.0 with Java, I have a simple traversal like this to get the neighborhood of a vertex:

Iterator<Vertex> neighbors=graph.traversal().V(vertexId).bothE(edgeLabels).otherV().dedup();

vertexId is the ID of the vertex of interest and edgeLabels are edge labels of interest (not all edge labels contribute to this view of the vertex's neighborhood).

When run as-is above, this works perfectly. However, in the interest of performance, I wanted to try using a GraphComputer, because the real graph has some vertices with on the order of one million neighbors.

If I simply add withComputer() after traversal(), like this, the query throws a series of exceptions.

Iterator<Vertex> neighbors=graph.traversal().withComputer().V(vertexId).bothE(edgeLabels).otherV().dedup();

The exceptions are similar to this:

2018-02-09 12:46:22.541 ERROR [o.j.d.k.s.StandardScannerExecutor       ] - Exception processing row [ 24-  0-  0-  0-  0-  0-  0-128]:  java.lang.IllegalArgumentException: Undefined type used in query: gremlin.traversalVertexProgram.haltedTraversers
    at org.janusgraph.graphdb.query.QueryUtil.getType(QueryUtil.java:63)
 
I am still somewhat new to Gremlin, but have extensive experience with Blueprints. Is my assumption that I can "automagically" benefit from Gremlin OLAP simply by adding withComputer() to an existing traversal (subject to the caveats in the documentation) incorrect? Am I doing something else?

Thanks in advance!

-- John J. Szucs


王Xiaoxi <xiao...@...>
 

Hi Marc,

I start a new thread https://groups.google.com/g/janusgraph-users/c/_SnWwZxLOPE.

Thanks for any suggestions.

--- Xiaoxi


On Thursday, September 24, 2020 at 10:38:19 PM UTC+8 HadoopMarc wrote:
Hi Xiao,
Can you please describe in more detail what you have attempted to accomplish and provide a complete stacktrace. You can start a new question/thread, unless it is very clear that your issue is the same as in the current thread.

Best wishes,    Marc

Op donderdag 24 september 2020 om 14:08:24 UTC+2 schreef xi...@...:
Hi John,

I have encountered the same trouble. If there any solution to solve the ERROR [o.j.d.k.s.StandardScannerExecutor]? And why it happened? 

Thanks for any suggestions
On Saturday, February 10, 2018 at 1:52:04 AM UTC+8 jo...@... wrote:
Using JanusGraph 0.2.0 with Java, I have a simple traversal like this to get the neighborhood of a vertex:

Iterator<Vertex> neighbors=graph.traversal().V(vertexId).bothE(edgeLabels).otherV().dedup();

vertexId is the ID of the vertex of interest and edgeLabels are edge labels of interest (not all edge labels contribute to this view of the vertex's neighborhood).

When run as-is above, this works perfectly. However, in the interest of performance, I wanted to try using a GraphComputer, because the real graph has some vertices with on the order of one million neighbors.

If I simply add withComputer() after traversal(), like this, the query throws a series of exceptions.

Iterator<Vertex> neighbors=graph.traversal().withComputer().V(vertexId).bothE(edgeLabels).otherV().dedup();

The exceptions are similar to this:

2018-02-09 12:46:22.541 ERROR [o.j.d.k.s.StandardScannerExecutor       ] - Exception processing row [ 24-  0-  0-  0-  0-  0-  0-128]:  java.lang.IllegalArgumentException: Undefined type used in query: gremlin.traversalVertexProgram.haltedTraversers
    at org.janusgraph.graphdb.query.QueryUtil.getType(QueryUtil.java:63)
 
I am still somewhat new to Gremlin, but have extensive experience with Blueprints. Is my assumption that I can "automagically" benefit from Gremlin OLAP simply by adding withComputer() to an existing traversal (subject to the caveats in the documentation) incorrect? Am I doing something else?

Thanks in advance!

-- John J. Szucs