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)