Marko A. Rodriguez created TINKERPOP-1166:
---------------------------------------------

             Summary: Add Memory.reduce() as option to Memory implementations.
                 Key: TINKERPOP-1166
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1166
             Project: TinkerPop
          Issue Type: Improvement
          Components: hadoop, process, tinkergraph
    Affects Versions: 3.1.2-incubating
            Reporter: Marko A. Rodriguez


Currently {{Memory}} supports {{incr}}, {{and}}, {{or}}, ... These are great 
and what people will typically  use. However, we should also provide the 
generalization which is simply {{Memory.reduce}}. In this situation, {{incr}}, 
{{or}}, {{and}}, etc. are just specifications of {{Memory.reduce}}.

How would it work?

When memory is initialized in a {{VertexProgram}}, it would be like this:

{code}
memory.set("myReduction", new MyReducingFunction(0))
{code}

Then {{ReducingFunction}} would look like this:

{code}
public class ReducingFunction implements UnaryOperator<A> {

  public A getInitialValue();

  public A apply(A first, A second);
}
{code}

Easy peasy. Note that both Spark and Giraph support such types of 
function-based reduction in their respective "memory engines." 
TinkerGraphComputer will, of course, be easy to add this functionality too.

Why do this? For two reasons:

1. We get extra flexibility in {{Memory}}.
2. https://issues.apache.org/jira/browse/TINKERPOP-1164





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to