[ 
https://issues.apache.org/jira/browse/TINKERPOP-1163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15213152#comment-15213152
 ] 

ASF GitHub Bot commented on TINKERPOP-1163:
-------------------------------------------

Github user okram commented on the pull request:

    
https://github.com/apache/incubator-tinkerpop/pull/278#issuecomment-201910150
  
    You can see how computer-only strategies don't show up in OLTP.
    
    ```
    gremlin> g = TinkerFactory.createModern().traversal()
    ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
    gremlin> g.V().explain()
    ==>Traversal Explanation
    ===============================================================
    Original Traversal                 [GraphStep(vertex,[])]
    
    ConnectiveStrategy           [D]   [GraphStep(vertex,[])]
    IdentityRemovalStrategy      [O]   [GraphStep(vertex,[])]
    IncidentToAdjacentStrategy   [O]   [GraphStep(vertex,[])]
    AdjacentToIncidentStrategy   [O]   [GraphStep(vertex,[])]
    FilterRankingStrategy        [O]   [GraphStep(vertex,[])]
    RangeByIsCountStrategy       [O]   [GraphStep(vertex,[])]
    TinkerGraphStepStrategy      [P]   [TinkerGraphStep(vertex,[])]
    ProfileStrategy              [F]   [TinkerGraphStep(vertex,[])]
    StandardVerificationStrategy [V]   [TinkerGraphStep(vertex,[])]
    
    Final Traversal                    [TinkerGraphStep(vertex,[])]
    gremlin> g = g.withComputer()
    ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], graphcomputer]
    gremlin> g.V().explain()
    ==>Traversal Explanation
    
===========================================================================================================
    Original Traversal                 [GraphStep(vertex,[])]
    
    ConnectiveStrategy           [D]   [GraphStep(vertex,[])]
    VertexProgramStrategy        [D]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    OrderLimitStrategy           [O]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    IdentityRemovalStrategy      [O]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    MatchPredicateStrategy       [O]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    IncidentToAdjacentStrategy   [O]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    AdjacentToIncidentStrategy   [O]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    FilterRankingStrategy        [O]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    RangeByIsCountStrategy       [O]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    TinkerGraphStepStrategy      [P]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    ProfileStrategy              [F]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    ComputerVerificationStrategy [V]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    StandardVerificationStrategy [V]   
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    
    Final Traversal                    
[TraversalVertexProgramStep([GraphStep(vertex,[])]), ComputerResultStep]
    gremlin>
    ```


> GraphComputer's can have TraversalStrategies.
> ---------------------------------------------
>
>                 Key: TINKERPOP-1163
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1163
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: hadoop, process
>    Affects Versions: 3.1.0-incubating
>            Reporter: Marko A. Rodriguez
>
> @dkuppitz makes the joke that he can count the number of vertices in the 
> Friendster adjacency list with "awk to the sed to the bash to the.." in < 1 
> minute. SparkGraphComputer with four blades takes ~5 minutes.
> What's the dealio?
> Imagine a world where {{SparkGraphComputerStrategy}} exists. It analyzes 
> traversals and does fast executions breaking away from the VertexProgram API 
> and going strait to the native API of Spark. Check it:
> {code}
> g.V().count() -> inputRDD.count()
> {code}
> ...add a {{EmptyVertex.instance()}} manipulation to the respective 
> InputFormats and you are just then skipping through bytes not manifesting 
> objects at all. BAM. That would take 30 seconds on Friendster.
> {code}
> g.V().outE('knows').count() --> 
> inputRDD.flatMapToPair{edgeComponents}.filter{knows}.count()
> {code}
> Blazing fast.
> ....for all those standard patterns, we just do a "native" execution for the 
> respective GraphComputer engine. We sideStep object creation, iteration 
> phases, views, map reduce jobs.... However, we have to be smart to update the 
> {{Memory}} so it looks as if the real VertexProgram executed! --- 
> {{iteration}}, {{runtime}}, {{~reducing}}, etc.
> Genius.



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

Reply via email to