I have used Neo4J to implement a content recommendation engine. I like Cypher, and find graph databases to be intuitive.

Looking at scaling to a larger data set, I am not confident No4J + Cypher will be performant. Spark has the GraphX project, which I have not used in the past.

Has anybody switched from Neo4J to Spark GraphX? Do the use cases overlap, aside from scalability? Or, does GraphX address a completely different problem set than Neo4J?

  • 1
    $\begingroup$ Hi, I do have the same query regarding scaling issue of Neo4j. And now I decided to go for Titan DB. Titan is an open source distributed graph database build on top of Cassandra. $\endgroup$ – Sreejithc321 Dec 11 '14 at 7:18

Neo4j and Spark GraphX are meant for solving problem at different level and they are complimentary to each other.

They can be connected by Neo4j's Mazerunner extension:

Mazerunner is a Neo4j unmanaged extension and distributed graph processing platform that extends Neo4j to do big data graph processing jobs while persisting the results back to Neo4j.

Mazerunner uses a message broker to distribute graph processing jobs to Apache Spark's GraphX module. When an agent job is dispatched, a subgraph is exported from Neo4j and written to Apache Hadoop HDFS.

After Neo4j exports a subgraph to HDFS, a separate Mazerunner service for Spark is notified to begin processing that data. The Mazerunner service will then start a distributed graph processing algorithm using Scala and Spark's GraphX module. The GraphX algorithm is serialized and dispatched to Apache Spark for processing.

Once the Apache Spark job completes, the results are written back to HDFS as a Key-Value list of property updates to be applied back to Neo4j.

Neo4j is then notified that a property update list is available from Apache Spark on HDFS. Neo4j batch imports the results and applies the updates back to the original graph.

Check out this tutorial to get an idea on how to combine the two: http://www.kennybastani.com/2014/11/using-apache-spark-and-neo4j-for-big.html

  • 3
    $\begingroup$ Providing a summary of external links' content would be useful. $\endgroup$ – Amir Ali Akbari Jan 25 '15 at 16:40
  • $\begingroup$ I will accept the answer after you provide a summary from the external link. Thanks. $\endgroup$ – sheldonkreger Jan 28 '15 at 19:49
  • 1
    $\begingroup$ I just updated the answer to add a summary $\endgroup$ – imadcat Feb 2 '15 at 7:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.