Thanks for your input Josh!

Sanjeev has a comment in the PR to improve it. I am going to try it out. At
the same time, please feel free to reply with your concerns or suggestions.
Thanks in advance.

On Wed, Sep 19, 2018 at 2:00 PM Josh Fischer <j...@joshfischer.io> wrote:

> I can understand why some would not want to mix the two APIs as they each
> stand for a different concept.  I also have found in my own experience the
> streamlet API to be limiting in some cases.  For example I couldn't find a
> way to implement a specific grouping between Streamlets in a case where I
> wanted fine grained control on what data was sent over different instances
> of a Streamlet (of course this is probably part of the abstraction).    I
> like the low level control you have with the spout and bolt implementations
> and think it would be nice to have the flexibility to choose when you want
> to take fine grained control if using the Streamlet API.
>
>
>
> On Wed, Sep 19, 2018 at 12:22 PM Ning Wang <wangnin...@gmail.com> wrote:
>
> > Hi, all,
> >
> > We had a discussion in this PR but I am feeling that it would be good to
> > gather more thoughts from other devs/users as well.
> >
> >
> >
> https://github.com/apache/incubator-heron/pull/3029#pullrequestreview-156614156
> >
> >
> > During Twitter internal onboarding of Streamlet API, I started to
> consider
> > supporting low level Bolt and Spout in Streamlet API. I totally
> understand
> > the concerns that Neng and Jerry raised in the PR that the Streamlet API
> is
> > not pure with Bolt/Spout support because it would expose low level
> things.
> > However I am still feeling that the advantages is way more than the
> > disadvantages with the support. The following are my comments in the RP:
> >
> > ========
> >
> > Here are my thoughts:
> >
> > Streamlet is not really the abstraction. My feeling is that Streamlet is
> > good at the DAG layer but not flexible enough in the low level
> (operators).
> > I would think it is like Scala vs Java(not the same, just some idea).
> Scala
> > has the nice functional API but it is pretty useless in real life if
> > procedural code is not allowed/supported.
> >
> > Two reasons:
> >
> >    1. Migration is one major reason. There are quite some existing
> >    topologies written in low level API (for heron and storm). Streamlet
> is
> >    only friendly to new users, existing code such as KafkaSpout (it is
> > spout,
> >    but same issue) in storm and some ML bolts has to be rewritten to take
> > the
> >    readability/maintainability advantages.
> >    2. Bolt/Spout are more flexible. They can do a lot more than a
> function
> >    provided by Streamlet API (initialization, config, checkpoint, etc).
> For
> >    examples, the stateful processing and component configs, they are not
> >    supported currently by Streamlet and if we add the features, it is
> > likely
> >    user has to provide extra functions as parameters and the Streamlet
> API
> >    would became more and more complicated. Streamlet API will evolve but
> >    supporting Bolt/Spout could give us a lot room to design a clean API.
> >
> > ========
> >
>

Reply via email to