Re: EdgeId and RelationId using VertexWritable

HadoopMarc <bi...@...>

Hi Rafi,

Ok, let's go one step deeper. The StringFactory comes from TinkerPop and does not know about JanusGraph Relationidentifier. The same holds for HadoopGraph. So the HadoopGraph object uses the Edge interface as generic object type for edges. For to return the format you expect from a JanuGraphEdge, the RelationIdentifier.toString() method needs to be called. You can only achieve this by explicitly casting the object to a RelationIdentifier (or maybe by casting edge to a JanusGraphEdge).

HTH,    Marc

Op woensdag 26 augustus 2020 om 09:05:32 UTC+2 schreef ra...@...:

Thanks Marc

I understood the encoding part of the edge_id components. I have few more doubts.
If we look at the example [1zf-388-b2t-368][4184-lives->4112] 
1zf = LongEncoding.encode(2571L) ... RelationId
388 = LongEncoding.encode(4184L) ... Outgoing vertex ID
368 =  LongEncoding.encode(4112L) Incoming vertex ID
b2t = ? ( unknown) ...  From the Relation Identifier , i saw the fourth part is the typeID but what is this and how is it being derived is still unclear to me.

Since I dont have the type ID with me , it seems that the typecasting to RelationIdentifier would not be possible.



On Wednesday, August 26, 2020 at 12:35:54 AM UTC+5:30 HadoopMarc wrote:
Ok, the form [1zf-388-b2t-368][4184-lives->4112] derives from:

return E + L_BRACKET + + R_BRACKET + L_BRACKET + edge.outVertex().id() + DASH + edge.label() + ARROW + edge.inVertex().id() + R_BRACKET;

You can also check in the console:

gremlin> import org.janusgraph.util.encoding.LongEncoding
gremlin> LongEncoding.encode(2571L)
gremlin> LongEncoding.encode(4184L)
gremlin> LongEncoding.encode(4112L)

I guess you have to typecast the result to the JanusGraph RelationIdentifier somehow to get the canonical form you want. My scala is a bit rusty, so I leave that to you.

Btw, it can hardly be a coincidence that someone else had the same problem in a current thread!


Op dinsdag 25 augustus 2020 om 12:50:44 UTC+2 schreef ra...@...:
Hi Everyone,

I am using the VertexWritable class of Janusgraph to fetch the data via Spark as below:
val rdd0: RDD[(NullWritable, VertexWritable)] = spark.sparkContext.newAPIHadoopRDD(hadoopConfiguration, classOf[CqlInputFormat], classOf[NullWritable], classOf[VertexWritable])

val rdd1: RDD[VertexWritable] = { case (x, y) => y.asInstanceOf[VertexWritable] }

When I use => x.edges(Direction.IN)), I get the tinkerpop Edge and the returns the relation ID (e[2571][4184-lives->4112]). How do I get the edge Id ==>e[1zf-388-b2t-368][4184-lives->4112]?

Join to automatically receive all group messages.