SlideShare a Scribd company logo
TouK Nussknacker
GUI for Flink
Maciek Próchniak
(that’s me)
How it all began?
POC with Apache Flink
Great results :)
Configuration
Client not (really) happy
Scala expression for filters
Client still not very happy
Ok, we’ll build you a GUI
Finally, approving nod...
Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI
Main assumptions
● Model & integration in “normal” code
● Expressions accessible for semi-technicals - like SQL
● Facilitate testing and experimentation
Basics
Architecture
Model + process
JSON
Config
JAR
JSON JSON
Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI
Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI
Model
Model
● Data - POJOs, case classes
● Source/Sink - Flink API + ε
● Processor/Enricher - Services
Config creator
trait ProcessConfigCreator extends Serializable {
def services(config: Config) : Map[String, WithCategories[Service]]
def sourceFactories(config: Config): Map[String, WithCategories[SourceFactory[_]]]
def sinkFactories(config: Config): Map[String, WithCategories[SinkFactory]]
...
}
Service/Enricher
@MethodToInvoke
def invoke(@ParamName("clientId") clientId: String)
(implicit ec: ExecutionContext): Future[Client] = {
...
}
Business rules - expressions
● Filters
● Aggregation definitions
● Actions - mail subject, sms content
How to define them...?
Expressions
Spring Expression Language!
● Accessible enough
● More or less fast enough
● Ability to do basic validation/code-completion
Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI
Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI
Limitations of SPEL
● Speed
● Synchronous
● Type safety??
Advanced?
What about...
● Windows?
● State?
● Joins?
● Other Flink goodies?
Knowing where to stop
Completness
Difficulty
Knowing where to stop
Custom stream transformer - POFO
@MethodToInvoke(returnType = classOf[EventCount])
def execute(@ParamName("key") key: LazyInterpreter[String],
@ParamName("length") length: String) =
FlinkCustomStreamTransformation((start: DataStream[InterpretationResult]) => {
start.keyBy(key.syncInterpretationFunction)
.transform("eventsCounter", new CounterFunction(lengthInMillis))
})
Tests/Ops
“Convincing” to test
We’ll do it “our” way:
first we run on production,
then deploy to test
Tests - running
Tests - running
Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI
Generate test data
Taking control
● Do we process data?
● What is latency?
● Where do we filter out events?
● Are there errors?
Taking control
DEMO
Where can I use it?
● Telco
● Banking
● Media
● RTM
● Fraud detection
Adhoc jobs vs process
Ad-hoc
Query
SQL
RBEA
CI
CD
Process
Monitoring
SAS
Scala
Testing
Does it work in production?
● 1 year in production
● One of largest Polish telco’s
● RTM + Fraud detection
Does it work in production?
Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI
Road ahead?
● Asynchronous services
● Pluggable security
● Define model via GUI/Schema registry
Road ahead?
● Integration with CEP and SQL
● DAGs instead of Trees in UI?
● Governance?
● Nussknacker as a Service?
Try it out!
https://github.com/touk/nussknacker
Thanks
@mpproch
@touk_pl

More Related Content

PDF
Flink Forward Berlin 2017: Boris Lublinsky, Stavros Kontopoulos - Introducing...
PPTX
Flink Forward Berlin 2017: Till Rohrmann - From Apache Flink 1.3 to 1.4
PDF
Flink Forward Berlin 2017: Zohar Mizrahi - Python Streaming API
PDF
Flink Forward Berlin 2017: Piotr Wawrzyniak - Extending Apache Flink stream p...
PDF
Flink Forward Berlin 2017: Andreas Kunft - Efficiently executing R Dataframes...
PPTX
Flink Forward Berlin 2017: Patrick Gunia - Migration of a realtime stats prod...
PDF
Flink Forward San Francisco 2018: Stefan Richter - "How to build a modern str...
PDF
Flink Forward Berlin 2017: Jörg Schad, Till Rohrmann - Apache Flink meets Apa...
Flink Forward Berlin 2017: Boris Lublinsky, Stavros Kontopoulos - Introducing...
Flink Forward Berlin 2017: Till Rohrmann - From Apache Flink 1.3 to 1.4
Flink Forward Berlin 2017: Zohar Mizrahi - Python Streaming API
Flink Forward Berlin 2017: Piotr Wawrzyniak - Extending Apache Flink stream p...
Flink Forward Berlin 2017: Andreas Kunft - Efficiently executing R Dataframes...
Flink Forward Berlin 2017: Patrick Gunia - Migration of a realtime stats prod...
Flink Forward San Francisco 2018: Stefan Richter - "How to build a modern str...
Flink Forward Berlin 2017: Jörg Schad, Till Rohrmann - Apache Flink meets Apa...

What's hot (20)

PPTX
Fabian Hueske_Till Rohrmann - Declarative stream processing with StreamSQL an...
PPTX
Apache Flink at Strata San Jose 2016
PPTX
Virtual Flink Forward 2020: A deep dive into Flink SQL - Jark Wu
PDF
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
PDF
Apache Flink and More @ MesosCon Asia 2017
PDF
Fault Tolerance and Job Recovery in Apache Flink @ FlinkForward 2015
PDF
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
PPTX
Apache flink 1.0.0 overview
PPTX
Redesigning Apache Flink's Distributed Architecture @ Flink Forward 2017
PDF
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
PDF
Flink Forward San Francisco 2019: Developing and operating real-time applicat...
PDF
Elastic Streams at Scale @ Flink Forward 2018 Berlin
PDF
Alexander Kolb – Flink. Yet another Streaming Framework?
PDF
Francesco Versaci - Flink in genomics - efficient and scalable processing of ...
PDF
Flink Forward Berlin 2017: Aljoscha Krettek - Talk Python to me: Stream Proce...
PPTX
Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...
PDF
Flink Connector Development Tips & Tricks
PPTX
Stephan Ewen - Stream Processing as a Foundational Paradigm and Apache Flink'...
PDF
Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud"
PDF
Pulsar connector on flink 1.14
Fabian Hueske_Till Rohrmann - Declarative stream processing with StreamSQL an...
Apache Flink at Strata San Jose 2016
Virtual Flink Forward 2020: A deep dive into Flink SQL - Jark Wu
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
Apache Flink and More @ MesosCon Asia 2017
Fault Tolerance and Job Recovery in Apache Flink @ FlinkForward 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Apache flink 1.0.0 overview
Redesigning Apache Flink's Distributed Architecture @ Flink Forward 2017
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward San Francisco 2019: Developing and operating real-time applicat...
Elastic Streams at Scale @ Flink Forward 2018 Berlin
Alexander Kolb – Flink. Yet another Streaming Framework?
Francesco Versaci - Flink in genomics - efficient and scalable processing of ...
Flink Forward Berlin 2017: Aljoscha Krettek - Talk Python to me: Stream Proce...
Flink Forward SF 2017: Stephan Ewen - Convergence of real-time analytics and ...
Flink Connector Development Tips & Tricks
Stephan Ewen - Stream Processing as a Foundational Paradigm and Apache Flink'...
Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud"
Pulsar connector on flink 1.14
Ad

Similar to Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI (20)

PDF
Apache flink
PPTX
Enhancing AI-Driven User Engagement with Real-Time Data Streaming via Flink.pptx
PPTX
Stephan Ewen - Experiences running Flink at Very Large Scale
PDF
Apache Flink - a Gentle Start
PPTX
The Past, Present, and Future of Apache Flink®
PPTX
Data Stream Processing with Apache Flink
PDF
Apache Flink Training Workshop @ HadoopCon2016 - #1 System Overview
PDF
Introduction to Flink Streaming
PDF
Apache Flink internals
PPTX
Chicago Flink Meetup: Flink's streaming architecture
PPTX
Apache flink
PPTX
Streaming and Social Media
PPTX
Architecture of Flink's Streaming Runtime @ ApacheCon EU 2015
PPTX
Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...
PPTX
The Past, Present, and Future of Apache Flink
PDF
A look at Flink 1.2
PDF
Stefan Richter - A look at Flink 1.2 and beyond @ Berlin Meetup
PPTX
Flink Streaming @BudapestData
PPTX
From Apache Flink® 1.3 to 1.4
PPTX
Continuous Processing with Apache Flink - Strata London 2016
Apache flink
Enhancing AI-Driven User Engagement with Real-Time Data Streaming via Flink.pptx
Stephan Ewen - Experiences running Flink at Very Large Scale
Apache Flink - a Gentle Start
The Past, Present, and Future of Apache Flink®
Data Stream Processing with Apache Flink
Apache Flink Training Workshop @ HadoopCon2016 - #1 System Overview
Introduction to Flink Streaming
Apache Flink internals
Chicago Flink Meetup: Flink's streaming architecture
Apache flink
Streaming and Social Media
Architecture of Flink's Streaming Runtime @ ApacheCon EU 2015
Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...
The Past, Present, and Future of Apache Flink
A look at Flink 1.2
Stefan Richter - A look at Flink 1.2 and beyond @ Berlin Meetup
Flink Streaming @BudapestData
From Apache Flink® 1.3 to 1.4
Continuous Processing with Apache Flink - Strata London 2016
Ad

More from Flink Forward (20)

PDF
Building a fully managed stream processing platform on Flink at scale for Lin...
PPTX
Evening out the uneven: dealing with skew in Flink
PPTX
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
PDF
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
PDF
Introducing the Apache Flink Kubernetes Operator
PPTX
Autoscaling Flink with Reactive Mode
PDF
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
PPTX
One sink to rule them all: Introducing the new Async Sink
PPTX
Tuning Apache Kafka Connectors for Flink.pptx
PDF
Flink powered stream processing platform at Pinterest
PPTX
Apache Flink in the Cloud-Native Era
PPTX
Where is my bottleneck? Performance troubleshooting in Flink
PPTX
Using the New Apache Flink Kubernetes Operator in a Production Deployment
PPTX
The Current State of Table API in 2022
PDF
Flink SQL on Pulsar made easy
PPTX
Dynamic Rule-based Real-time Market Data Alerts
PPTX
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
PPTX
Processing Semantically-Ordered Streams in Financial Services
PDF
Tame the small files problem and optimize data layout for streaming ingestion...
PDF
Batch Processing at Scale with Flink & Iceberg
Building a fully managed stream processing platform on Flink at scale for Lin...
Evening out the uneven: dealing with skew in Flink
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing the Apache Flink Kubernetes Operator
Autoscaling Flink with Reactive Mode
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
One sink to rule them all: Introducing the new Async Sink
Tuning Apache Kafka Connectors for Flink.pptx
Flink powered stream processing platform at Pinterest
Apache Flink in the Cloud-Native Era
Where is my bottleneck? Performance troubleshooting in Flink
Using the New Apache Flink Kubernetes Operator in a Production Deployment
The Current State of Table API in 2022
Flink SQL on Pulsar made easy
Dynamic Rule-based Real-time Market Data Alerts
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Processing Semantically-Ordered Streams in Financial Services
Tame the small files problem and optimize data layout for streaming ingestion...
Batch Processing at Scale with Flink & Iceberg

Recently uploaded (20)

PDF
Fluorescence-microscope_Botany_detailed content
PPT
Chapter 2 METAL FORMINGhhhhhhhjjjjmmmmmmmmm
PPTX
Computer network topology notes for revision
PPTX
oil_refinery_comprehensive_20250804084928 (1).pptx
PPTX
Introduction to Knowledge Engineering Part 1
PPTX
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
PPTX
IBA_Chapter_11_Slides_Final_Accessible.pptx
PPT
Miokarditis (Inflamasi pada Otot Jantung)
PDF
Clinical guidelines as a resource for EBP(1).pdf
PPTX
mbdjdhjjodule 5-1 rhfhhfjtjjhafbrhfnfbbfnb
PPTX
05. PRACTICAL GUIDE TO MICROSOFT EXCEL.pptx
PPTX
Introduction-to-Cloud-ComputingFinal.pptx
PPTX
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
PPTX
Database Infoormation System (DBIS).pptx
PDF
Mega Projects Data Mega Projects Data
PDF
Lecture1 pattern recognition............
PPTX
climate analysis of Dhaka ,Banglades.pptx
PPTX
advance b rammar.pptxfdgdfgdfsgdfgsdgfdfgdfgsdfgdfgdfg
PPTX
Major-Components-ofNKJNNKNKNKNKronment.pptx
PDF
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
Fluorescence-microscope_Botany_detailed content
Chapter 2 METAL FORMINGhhhhhhhjjjjmmmmmmmmm
Computer network topology notes for revision
oil_refinery_comprehensive_20250804084928 (1).pptx
Introduction to Knowledge Engineering Part 1
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
IBA_Chapter_11_Slides_Final_Accessible.pptx
Miokarditis (Inflamasi pada Otot Jantung)
Clinical guidelines as a resource for EBP(1).pdf
mbdjdhjjodule 5-1 rhfhhfjtjjhafbrhfnfbbfnb
05. PRACTICAL GUIDE TO MICROSOFT EXCEL.pptx
Introduction-to-Cloud-ComputingFinal.pptx
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
Database Infoormation System (DBIS).pptx
Mega Projects Data Mega Projects Data
Lecture1 pattern recognition............
climate analysis of Dhaka ,Banglades.pptx
advance b rammar.pptxfdgdfgdfsgdfgsdgfdfgdfgsdfgdfgdfg
Major-Components-ofNKJNNKNKNKNKronment.pptx
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”

Flink Forward Berlin 2017: Maciek Próchniak - TouK Nussknacker - creating Flink Jobs with GUI