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

ASF GitHub Bot commented on STORM-789:
--------------------------------------

Github user HeartSaVioR commented on the pull request:

    https://github.com/apache/storm/pull/525#issuecomment-94240470
  
    You can temporary change multilang_test.clj to make spout -> bolt -> bolt 
topology.
    
    ```clojure
    (defn test-multilang
           [executor file-extension]
           (with-local-cluster [cluster :supervisors 4]
             (let [nimbus (:nimbus cluster)
                   topology (thrift/mk-topology
                      {"1" (thrift/mk-shell-spout-spec [executor (str 
"tester_spout." file-extension)] ["word"])}
                      {"2" (thrift/mk-shell-bolt-spec {"1" :shuffle} [executor 
(str "tester_bolt." file-extension)] ["word"] :parallelism-hint 1)
                       "3" (thrift/mk-shell-bolt-spec {"2" :local-or-shuffle} 
[executor (str "tester_bolt." file-extension)] ["word"] :parallelism-hint 1)})]
             (submit-local-topology nimbus
                   "test"
                   {TOPOLOGY-WORKERS 20 TOPOLOGY-MESSAGE-TIMEOUT-SECS 3 
TOPOLOGY-DEBUG true}
                   topology)
           (Thread/sleep 10000)
           (.killTopology nimbus "test")
           (Thread/sleep 10000)
           )))
    ```
    
    Here's Spout.
    ```
    {
       "task->component":{
          "20":"__acker",
          "21":"__acker",
          "22":"__acker",
          "23":"__acker",
          "1":"1",
          "3":"3",
          "2":"2",
          "5":"__acker",
          "4":"__acker",
          "7":"__acker",
          "6":"__acker",
          "9":"__acker",
          "8":"__acker",
          "11":"__acker",
          "10":"__acker",
          "13":"__acker",
          "12":"__acker",
          "15":"__acker",
          "14":"__acker",
          "17":"__acker",
          "16":"__acker",
          "19":"__acker",
          "18":"__acker"
       },
       "stream->target->grouping":{
          "default":{
             "2":"SHUFFLE"
          }
       },
       "streams":[
          "default"
       ],
       "stream->outputfields":{
          "default":[
             "word"
          ]
       },
       "taskid":1,
       "source->stream->grouping":{
    
       },
       "componentid":"1"
    }
    ```
    
    Bolt 1.
    ```
    {
       "task->component":{
          "20":"__acker",
          "21":"__acker",
          "22":"__acker",
          "23":"__acker",
          "1":"1",
          "3":"3",
          "2":"2",
          "5":"__acker",
          "4":"__acker",
          "7":"__acker",
          "6":"__acker",
          "9":"__acker",
          "8":"__acker",
          "11":"__acker",
          "10":"__acker",
          "13":"__acker",
          "12":"__acker",
          "15":"__acker",
          "14":"__acker",
          "17":"__acker",
          "16":"__acker",
          "19":"__acker",
          "18":"__acker"
       },
       "stream->target->grouping":{
          "default":{
             "3":"LOCAL_OR_SHUFFLE"
          }
       },
       "streams":[
          "default"
       ],
       "stream->outputfields":{
          "default":[
             "word"
          ]
       },
       "taskid":2,
       "source->stream->grouping":{
          "1":{
             "default":"SHUFFLE"
          }
       },
       "componentid":"2"
    }
    ```
    
    Bolt 2.
    ```
    {
       "task->component":{
          "20":"__acker",
          "21":"__acker",
          "22":"__acker",
          "23":"__acker",
          "1":"1",
          "3":"3",
          "2":"2",
          "5":"__acker",
          "4":"__acker",
          "7":"__acker",
          "6":"__acker",
          "9":"__acker",
          "8":"__acker",
          "11":"__acker",
          "10":"__acker",
          "13":"__acker",
          "12":"__acker",
          "15":"__acker",
          "14":"__acker",
          "17":"__acker",
          "16":"__acker",
          "19":"__acker",
          "18":"__acker"
       },
       "stream->target->grouping":{
    
       },
       "streams":[
          "default"
       ],
       "stream->outputfields":{
          "default":[
             "word"
          ]
       },
       "taskid":3,
       "source->stream->grouping":{
          "2":{
             "default":"LOCAL_OR_SHUFFLE"
          }
       },
       "componentid":"3"
    }
    ```
    
    Looks really fine.


> Enhance topology context sent to multi-lang bolts and spouts
> ------------------------------------------------------------
>
>                 Key: STORM-789
>                 URL: https://issues.apache.org/jira/browse/STORM-789
>             Project: Apache Storm
>          Issue Type: Improvement
>            Reporter: Dan Blanchard
>            Assignee: Dan Blanchard
>
> I'm about to submit a pull request that adds a lot more contextual 
> information to the "context" JSON dictionary that gets sent to multi-lang 
> bolts and spouts as part of their initial handshake.  These additions will 
> make is so non-JVM developers have access to the sources, targets, and field 
> names for their bolts and spouts.  
> We will add support for this in streamparse (one of the more popular Python 
> libraries for Storm) as soon as this gets merged in.
> Here are the details of what I've added:
> -  componentid: the component ID for this task, so you don't have to look it 
> up
>                 in "task->component" by "taskid"
> -  streams: a list of all of the streams for this task
> -  stream->outputfields:  a mapping from stream names to output fields for 
> that
>                           stream
> -  stream->target->grouping: a mapping from stream names to the targets for 
> this
>                              task to the kind of grouping they use.
> -  sources->grouping:  a mapping from the component IDs of the sources to 
> their
>                        grouping.
> Note on groupings:  groupings are either represented as a string (e.g., 
> "SHUFFLE") or a list of strings for field groupings.



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

Reply via email to