Hi guys,

Good news! We have made a prototype for integrating CEP and SQL. See this
link
https://github.com/apache/flink/compare/master...wuchong:cep-on-sql?expand=1


You can check CepITCase to try the simple CQL example.

Meanwhile, we updated our design doc with additional implementation detail,
including how
to translate MATCH_RECOGNIZE into CEP API, and the features needed to add
to Flink CEP,
and the implementation plan. See the document
https://docs.google.com/document/d/1HaaO5eYI1VZjyhtVPZOi3jVzikU7iK15H0YbniTnN30/edit#heading=h.4oas4koy8qu3

In the prototype, we make flink-table dependency on flink-cep. Do you think
that is fine?

What do you think about the prototype and the design doc ?

Any feedbacks are welcome!

Cheers,
Jark Wu


2017-06-08 17:54 GMT+08:00 Till Rohrmann <trohrm...@apache.org>:

> Thanks for sharing your ideas with the community. I really like the design
> document and think that it's a good approach to follow Oracle's SQL
> extension for pattern matching. Looking forward to having support for SQL
> with CEP capabilities :-)
>
> Cheers,
> Till
>
> On Thu, Jun 8, 2017 at 8:57 AM, Jark Wu <j...@apache.org> wrote:
>
> > Hi  @Kostas, @Fabian, thank you for your support.
> >
> > @Fabian, I totally agree with you that we should focus on SQL first.
> Let's
> > keep Table API in mind and discuss that later.
> >
> > Regarding to the orderBy() clause, I'm not sure about that. I think it
> > makes sense to make it required in streaming mode(either order by rowtime
> > or order by proctime). But CEP also works in batch mode, and not
> necessary
> > to order by some column. Nevertheless, we can support CEP on batch SQL
> > later.
> >
> > We are estimating how to implement MATCH_RECOGNIZE with CEP library (with
> > NFA, CEP operator). And we will output a detailed doc and a prototype in
> > the next days.
> >
> > Regards,
> > Jark Wu
> >
> >
> > 2017-06-07 21:40 GMT+08:00 Fabian Hueske <fhue...@gmail.com>:
> >
> >> Thanks Dian and Jark for this proposal!
> >>
> >> As you wrote, Till and I (and Kostas) have been thinking about this for
> >> some time but haven't had time to work on this feature.
> >> I think it would be a great addition and value add for Flink's SQL
> >> support and Table API.
> >>
> >> I read the proposal and think it is very good. We might need to add a
> bit
> >> more details, esp. when planning the concrete steps of the
> implementation.
> >>
> >> A few comments to the proposal:
> >> - IMO, the development should start focusing on SQL and its semantics.
> >> Pattern support for the Table API should be added later. We followed
> that
> >> approach for the OVER windows and I think it worked quiet well.
> >> - We probably want to reuse as much as possible from the CEP library.
> >> That means we need to check if the semantics of the CEP library and
> >> Oracle's PATTERN syntax are aligned (or how we can express the PATTERN
> >> semantics with the CEP library). This should be one of the first steps,
> IMO.
> >> - I would make the orderBy() clause required. In regular SQL rows have
> no
> >> order, so we need to make that explicit (this would also be consistent
> with
> >> the OVER windows).
> >>
> >> Let me know what you think.
> >>
> >> Best, Fabian
> >>
> >> 2017-06-07 11:41 GMT+02:00 Kostas Kloudas <k.klou...@data-artisans.com
> >:
> >>
> >>> Thanks a lot for opening the discussion!
> >>>
> >>> This is a really interesting idea that has been in our heads
> >>> since the first implementation of the CEP library.
> >>>
> >>> A big +1 for moving forward with this.
> >>>
> >>> And as for the design document, I will definitely have a look
> >>> and comment there.
> >>>
> >>> Kostas
> >>>
> >>> On Jun 7, 2017, at 10:05 AM, Jark Wu <j...@apache.org> wrote:
> >>>
> >>> Sorry, I forgot to cc you guys @Fabian, @Timo, @Till, @Kostas
> >>>
> >>> 2017-06-07 15:42 GMT+08:00 Jark Wu <j...@apache.org>:
> >>>
> >>>> Hi devs,
> >>>>
> >>>> Dian and me and our teammates have investigated this for a long time.
> >>>> We think consolidating Flink SQL and CEP is an exciting thing for
> Flink.
> >>>> It'll make SQL more powerful and give users the ability to easily and
> >>>> quickly build CEP applications.  And I find Flink community has also
> talked
> >>>> about this idea before, such as the mailing list [1] and [2] and
> Fabian &
> >>>> Till's talk in Flink Forward 2016 [3].
> >>>>
> >>>> I think THIS IS THE POINT to bring up this topic again. Because we
> >>>> already have pattern matching foundation in Flink CEP library, and
> Stream
> >>>> SQL is ready now and Calcite has partially supported pattern matching
> >>>> syntax!  We also drafted a design doc about how to integrate SQL and
> CEP,
> >>>> and how to support CEP on Table API. https://docs.google.com/docume
> >>>> nt/d/1HaaO5eYI1VZjyhtVPZOi3jVzikU7iK15H0YbniTnN30/edit?usp=sharing
> >>>>
> >>>>
> >>>> @Fabian, @Timo, @Till, @Kostas I include you into this discussion, it
> >>>> would be great to hear your response.
> >>>>
> >>>>
> >>>> What do others think?
> >>>>
> >>>>
> >>>> [1] http://apache-flink-mailing-list-archive.1008284.n3.nabble.c
> >>>> om/Add-CEP-library-to-Flink-td9743.html#a9787
> >>>>
> >>>> [2] http://apache-flink-mailing-list-archive.1008284.n3.nabble.c
> >>>> om/Effort-to-add-SQL-StreamSQL-to-Flink-td9727.html#a9790
> >>>>
> >>>> [3] https://www.slideshare.net/tillrohrmann/streaming-analytics-
> >>>> cep-two-sides-of-the-same-coin
> >>>>
> >>>>
> >>>> Regards,
> >>>>
> >>>> Jark Wu
> >>>>
> >>>>
> >>>>
> >>>> 2017-06-07 13:50 GMT+08:00 Dian Fu <dia...@apache.org>:
> >>>>
> >>>>> Hi everyone,
> >>>>>
> >>>>> Flink's CEP library is a great library for complex event processing,
> >>>>> more
> >>>>> and more customers are expressing their interests in it. But it also
> >>>>> has
> >>>>> some limitations that users usually have to write a lot of code even
> >>>>> for a
> >>>>> very simple pattern match use case as it currently only supports the
> >>>>> Java
> >>>>> API.
> >>>>> We have investigated some popular CEP products such as esper [1] and
> >>>>> siddhi
> >>>>> [2] and found that most of these CEP products support SQL-like
> >>>>> expressions
> >>>>> such as EPL to describe the match pattern. But these solutions also
> >>>>> have
> >>>>> the drawbacks that the pattern match languages are not standard SQL,
> >>>>> the
> >>>>> learn curve is steep for users and it's impossible to integrate them
> >>>>> into
> >>>>> the Flink Table API & SQL.
> >>>>> We find that Oracle's CEP solution CQL [3] supports a new pattern
> >>>>> recognition clause match_recognize which is a pattern recognition
> >>>>> clause
> >>>>> proposed in this paper [4]. It proposes a set of new syntaxes to
> define
> >>>>> match pattern in sql expression. Calcite already supports part of
> this
> >>>>> standard [5].  I think it will be of great value to support
> expressing
> >>>>> pattern recognition clause with match_recognize clause by integrating
> >>>>> it
> >>>>> with Flink Table API & SQL and the Flink CEP library. Any thoughts?
> >>>>>
> >>>>> [1] http://www.espertech.com
> >>>>> [2] https://github.com/wso2/siddhi
> >>>>> [3]
> >>>>> https://docs.oracle.com/middleware/1213/eventprocessing/cql-
> >>>>> reference/GUID-34D4968E-C55A-4BC7-B1CE-C84B202217BD.htm#CQLLR1531
> >>>>> [4]
> >>>>> http://web.cs.ucla.edu/classes/winter17/cs240B/notes/row-pat
> >>>>> tern-recogniton-11.pdf
> >>>>> [5] https://issues.apache.org/jira/browse/CALCITE-1570
> >>>>>
> >>>>> Best Regards,
> >>>>> Dian
> >>>>>
> >>>>
> >>>>
> >>>
> >>>
> >>
> >
>

Reply via email to