Hi,

I've been using drools in a few projects. Embedding Drools in Flink is certainly possible, however there are a few points you have to consider. - are you going to use Drools in stateful or stateless way? The blog post you mention uses flink in stateless way - that is, each event is processed separately and each drools session behaves like a bunch of if's. This is straightforward, it also shouldn't be problematic performance wise OTOH, if you want to use stateful sessions things are getting more complicated - because if you want to play well with Flink you'd have to integrate drools sessions with checkpoints in Flink - and that can be a bit more tricky (although certainly possible) - especially when it comes to size of session, partitioning and so on. Even more difficult would be to use Drools CEP features - because then you'd have to consider how to handle time (e.g. during restore??). To be honest, I wouldn't try to integrate Drools CEP with Flink - Flink has it's own time handling, own CEP engine and mixing those two can lead to tricky issues...

Even if you decide to use stateless sessions there's issue with deployment. If you don't want to redeploy Flink process each time one of the users change rules, you'd have to implement some notion of detecting changes (and storing rules somewhere?) and recompiling rules on each task manager. Again - this is certainly doable and possible, but requires some thinking about the design.

To sum up - there are many ways you can integrate drools with flink. I'd start with something simple - exactly as Robert wrote
hope this helps a bit and good luck,

maciek



On Tue, Jun 21, 2016 at 7:55 AM, Anton <kurren...@gmail.com> wrote:

Hello

Firstly, I am an absolute Flink newbie.

I am interested in using Drools in Flink - in a similar case to what is
described in this blog, where Drools is used in Spark.

http://blog.cloudera.com/blog/2015/11/how-to-build-a-complex-event-processing-app-on-apache-spark-and-drools/

The basic idea is that Drools can be used to reason over streaming data.

The high-level use case is, there are several hundred users who want to
write rules to be notified on events related to changes in specific
streams. For example, notify me when a specific stock price changes by so
much.

Due to the number of users, the more end-user focused syntax of Drools, and
the number of rule changes, doing this in Drools makes more sense than to
write and deploy plain-old-flink (apologies, am not familiar with the
correct term for a flink process).

Also, as Drools has some powerful CEP operators, it could be very
interested to have these available in Flink too.

My question, therefore, is, very general - how best to integrate Drools
into Flink? Where should I start?

Thanks and regards
Anton



Reply via email to