Interface GraphComputer

All Known Implementing Classes:
GraphComputerTest.BadGraphComputer, TinkerGraphComputer

public interface GraphComputer
The GraphComputer is responsible for the execution of a VertexProgram and then a set of MapReduce jobs over the vertices in the Graph. It is up to the GraphComputer implementation to determine the appropriate memory structures given the computing substrate.
Author:
Marko A. Rodriguez (http://markorodriguez.com), Matthias Broecheler (me@matthiasb.com)
  • Method Details

    • result

      Set the GraphComputer.ResultGraph of the computation. If this is not set explicitly by the user, then the VertexProgram can choose the most efficient result for its intended use. If there is no declared vertex program, then the GraphComputer defaults to GraphComputer.ResultGraph.ORIGINAL.
      Parameters:
      resultGraph - the type of graph to be returned by ComputerResult.graph()
      Returns:
      the updated GraphComputer with newly set result graph
    • persist

      Set the GraphComputer.Persist level of the computation. If this is not set explicitly by the user, then the\ VertexProgram can choose the most efficient persist for the its intended use. If there is no declared vertex program, then the GraphComputer defaults to GraphComputer.Persist.NOTHING.
      Parameters:
      persist - the persistence level of the resultant computation
      Returns:
      the updated GraphComputer with newly set persist
    • program

      GraphComputer program(VertexProgram vertexProgram)
      Set the VertexProgram to be executed by the GraphComputer. There can only be one VertexProgram for the GraphComputer.
      Parameters:
      vertexProgram - the VertexProgram to be executed
      Returns:
      the updated GraphComputer with newly set VertexProgram
    • mapReduce

      GraphComputer mapReduce(MapReduce mapReduce)
      Add a MapReduce job to the set of MapReduce jobs to be executed by the GraphComputer. There can be any number of MapReduce jobs.
      Parameters:
      mapReduce - the MapReduce job to add to the computation
      Returns:
      the updated GraphComputer with newly added MapReduce job
    • workers

      GraphComputer workers(int workers)
      Set the desired number of workers to execute the VertexProgram and MapReduce jobs. This is a recommendation to the underlying GraphComputer implementation and is allowed to deviate accordingly by the implementation.
      Parameters:
      workers - the number of workers to execute the submission
      Returns:
      the updated GraphComputer with newly set worker count
    • vertices

      Add a filter that will limit which vertices are loaded from the graph source. The provided Traversal can only check the vertex, its vertex properties, and the vertex property properties. The loaded graph will only have those vertices that pass through the provided filter.
      Parameters:
      vertexFilter - the traversal to verify whether or not to load the current vertex
      Returns:
      the updated GraphComputer with newly set vertex filter
      Throws:
      IllegalArgumentException - if the provided traversal attempts to access vertex edges
    • edges

      Add a filter that will limit which edges of the vertices are loaded from the graph source. The provided Traversal can only check the local star graph of the vertex and thus, can not access properties/labels of the adjacent vertices. The vertices of the loaded graph will only have those edges that pass through the provided filter.
      Parameters:
      edgeFilter - the traversal that determines which edges are loaded for each vertex
      Returns:
      the updated GraphComputer with newly set edge filter
      Throws:
      IllegalArgumentException - if the provided traversal attempts to access adjacent vertices
    • vertexProperties

      GraphComputer vertexProperties(Traversal<Vertex,? extends Property<?>> vertexPropertyFilter)
      Add a filter that will limit which vertex properties are loaded from the graph source. The loaded vertices will only have those properties that pass through the provided filter. To drop all vertex properties, provide a traversal like __.properties("dummy") where "dummy" is not a valid vertex property.
      Parameters:
      vertexPropertyFilter - the traversal that determines which vertex properties are loaded for each vertex
      Returns:
      the updated GraphComputer with newly set vertex property filter
    • configure

      default GraphComputer configure(String key, Object value)
      Set an arbitrary configuration key/value for the underlying Configuration in the GraphComputer. Typically, the other fluent methods in GraphComputer should be used to configure the computation. However, for some custom configuration in the underlying engine, this method should be used. Different GraphComputer implementations will have different key/values and thus, parameters placed here are generally not universal to all GraphComputer implementations. The default implementation simply does nothing and returns the GraphComputer unchanged.
      Parameters:
      key - the key of the configuration
      value - the value of the configuration
      Returns:
      the updated GraphComputer with newly set key/value configuration
    • submit

      Submit the VertexProgram and the set of MapReduce jobs for execution by the GraphComputer.
      Returns:
      a Future denoting a reference to the asynchronous computation and where to get the DefaultComputerResult when its is complete.
    • features

      default GraphComputer.Features features()