SlideShare a Scribd company logo
1 of 45
Download to read offline
Stream Processing Airport Data
Sönke Liebau – Co-Founder and Partner @ OpenCore
January 10th
2019
Serving the Real-Time Data Needs of an Airport with Kafa
Streams and KSQL
Who Am I?
• Partner & Co-Founder at
• Small consultng company with a Big Data & Open Source focus
• First producton Kafa deployment in 2014
Website: www.opencore.com
soenke.liebau@opencore.com
htps:/p/pwww.linkedin.com/pin/psoenkeliebau/p
@soenkeliebau
Kafka Streams & KSQL
Source: htps:/p/pkafa.apache.org/p20/pdocumentaton/pstreams/p 13
What Is Kafka Streams?
“The easiest way to write mission-critcal real-tme applicatons and
microservices”
“Kafa Streams is a client library for building applicatons and microservices, where the input and output
data are stored in Kafa clusters. “
What Is KSQL?
Confluent S QL is the open source,
streaming QL engine that enables
real-tme data processing against
Apache Safaa
Source: htps:/p/pwww.coniuent.io/pproduct/pksql/p 14
© 2019 OpenCore GmbH & Co. KG 15
Kafka Streams & KSQL In The
Ecosystem
Sources KafaConnect
KafaConnect
Destnatons
Kafa
Streams
Jobs
© 2019 OpenCore GmbH & Co. KG 18
The Big Diference
20
Using Kafka Streams
final Serde<String> stringSerde = Serdes.String();
final Serde<Long> longSerde = Serdes.Long();
 
KStream<String, String> textLines = builder.stream("streams-plaintext-input",
    Consumed.with(stringSerde, stringSerde);
 
KTable<String, Long> wordCounts = textLines
    .fatMapValues(value -> Arrays.asList(value.toLowerCase().split("W+")))
     .groupBy((key, value) -> value)
     .count()
 
wordCounts.toStream().to("streams-wordcount-output", Produced.with(Serdes.String(), Serdes.Long()));
 
Source: htps:/p/pkafa.apache.org/p20/pdocumentaton/pstreams/pquickstart
21
Using Kafka Streams
final Serde<String> stringSerde = Serdes.String();
final Serde<Long> longSerde = Serdes.Long();
 
KStream<String, String> textLines = builder.stream("streams-plaintext-
input",
    Consumed.with(stringSerde, stringSerde);
 
KTable<String, Long> wordCounts = textLines
    .fatMapValues(value ->
Arrays.asList(value.toLowerCase().split("W+")))
     .groupBy((key, value) -> value)
     .count()
 
wordCounts.toStream().to("streams-wordcount-output",
Produced.with(Serdes.String(), Serdes.Long()));
 
Source: htps:/p/pkafa.apache.org/p20/pdocumentaton/pstreams/pquickstart
…
© 2019 OpenCore GmbH & Co. KG 22
Using KSQL
RestInterface
CLI
Rest
Client
SELECT *
FROM security_in
WHERE status=’success’ 
AND terminal=’t1’;
23
Running A KSQL Statement
© 2017 OpenCore GmbH & Co. KG 24
The Competition
Safa treams S QL
When To Use Which?
• Ofers lower level access
• More data formats supported
• Queryable state
• Problems that cannot be expressed in
SQL
• Easier for people used to SQL
• No need for additonal orchestraton
• Data exploraton
© 2019 OpenCore GmbH & Co. KG 25
Our Airport
© 2017 OpenCore GmbH & Co. KG 26
© 2017 OpenCore GmbH & Co. KG 27
A Few Facts Up Front
• A lot of independent data sources
• Airline tcketng
• Baggage transport system
• Passenger countng
• Retail
• Radar
• Weather
• …
• Spread over multple companies
• Many legacy interfaces
© 2019 OpenCore GmbH & Co. KG 28
Integrations
Operatons
Database
External
System
External
System
External
System
External
System
External
System
External
System
© 2019 OpenCore GmbH & Co. KG 29
Isolated Islands Of Data
• A lot of isolated data stores to provide data for necessary solutons
• Spiderweb of integratons
• Operatonal DB needs to push data to a lot of systems
• Many diferent formats
© 2019 OpenCore GmbH & Co. KG 31
The Dream
…
Weird
binary
source
XML
Source
Destnaton
Destnaton
Destnaton
Raw Source Processed
RestStream Processing
© 2019 OpenCore GmbH & Co. KG 32
Ingest Transformation - Kafka Streams
StreamsBuilder builder = new StreamsBuilder();
Serde<ProprietaryObject> weirdFormatSerde = new ProprietaryWeirdFormatSerde();
Serde<ProprietaryObject> avroSerde = new ProprietaryAvroSerde();
 
builder.stream(“proprietary_input_topic",
    Consumed.with(
        Serdes.String(),
        weirdFormatSerde))
    .to("avro_output_topic",
        Produced.with(
            Serdes.String(),
            avroSerde));
33
Ingest Transformation - KSQL
ksql> CREATE STREAM source (uid INT, name VARCHAR) WITH (KAFKA_TOPIC='mysql_users',
VALUE_FORMAT='JSON‘);
ksql> CREATE STREAM target_avro WITH (VALUE_FORMAT='AVRO', KAFKA_TOPIC='mysql_users_avro')
AS SELECT * FROM source;
Source: htps:/p/pgist.github.com/prmof/p165b05e4554c41719b71f1a47ee7b113
© 2019 OpenCore GmbH & Co. KG 34
Stream Processing
• Stream processing jobs read converted avro topics and create enriched
topics/palerts/p… by
• Joining streams
• Aggregatng streams
• Filtering or alertng on streams
• …
© 2019 OpenCore GmbH & Co. KG 35
DISCLAIMER
© 2019 OpenCore GmbH & Co. KG 36
Gate Changes
• Gate changes can be based on diferent informaton
• Delays of the incoming iight
• Changes on other outgoing iights
• …
• Join relevant streams and publish change events that are consumed by
• Apps
• Gate monitors
• Departure boards
• …
© 2019 OpenCore GmbH & Co. KG 37
Passenger Count
• Join stream of tckets scanned before line to security check and camera
count of passengers leaving security check to estmate number of waitng
passengers
• Change routng of passengers (physical: signs change & digital: diferent routng in
app)
• Also consumed by
• Monitors to display predicted waitng tme
• App to display predicted wait tme
• Prediciton systems to feed models for capacity planning
• Models to predict if a passenger might miss his iight -> reroute to priority lane
© 2019 OpenCore GmbH & Co. KG 38
Wait Time
• Calculate how long a passenger took to clear the security checkpoint by
joining when he scanned his boarding pass and when he is frst spoted by
an iBeacon beyond security
• Push ofers based on wait tme and iight tme
• Long wait, lot of tme tll take-of -> free cofee or sandwich
• Long wait, short tme tll take-of -> duty free voucher
• …
© 2019 OpenCore GmbH & Co. KG 39
Baggage Notifcation
• Baggage containers are scanned when they are loaded/punloaded
• By joining this with data from the baggage sorter passengers could receive
push notfcatons when their luggage is loaded/punloaded into/pfrom the
plane
© 2019 OpenCore GmbH & Co. KG 40
Arrival At Gate
• There are complex models running to estmate when the plane will arrive at
the gate afer it has landed
• Based on ground radar data
• Can be used to
• Predict whether the following iight might be delayed
• Coordinate cleaning crews
• Coordinate refueling
• Feed into gate change decisions
© 2019 OpenCore GmbH & Co. KG 41
An Example Flow
{"boardingpass_id":"123",
"passenger“:"smith",
"flight_number":"LH454“,
“checked_bags”:1}
{"boardingpass_id":"123",
"security_area":"t1_2",
"status":"success"}
{"security_area":"t1_2",
"count":"1"}
{"passenger":"smith",
"beacon_id":"t1_b123"}
{"boardingpass_id":"123",
 "item_group":"cigarettes"}
{"boardingpass_id":"123",
"status":"success"}
{"flight_no":"LH454",
“runway":“1north"}
{“old_gate":“a12”,
 “new_gate":“e50"}
© 2019 OpenCore GmbH & Co. KG 42
Check-In Event
{"boardingpass_id":"123",
"passenger":"smith",
"flight_number":"LH454“,
“terminal”:“terminal1” }
check_in_count
CREATE TABLE check_in_count
AS SELECT terminal, count(terminal)
FROM security_in 
WINDOW TUMBLING (SIZE 24 hour)
GROUP BY terminal;
check_in
What is it good for?
• Early warning for security capacity
• „Don‘t dawdle“ warning based on
security queues
© 2019 OpenCore GmbH & Co. KG 43
Passenger Enters Security Area
{"boardingpass_id":"123",
"security_area":"t1_2",
"status" : "success"}
security_in_count
CREATE TABLE security_in_count
AS SELECT 
  security_area, 
  count(security_area)
FROM security_in 
WINDOW TUMBLING (SIZE 24 hour)
WHERE status='success'
GROUP BY security_area;
security_in
What is it good for?
• Monitor for failed atempts
• Passenger routng to security
• Unload baggage of late passengers
• …
tme_to_security
SELECT 
  s.boardingpass_id, c.rowtime - s.rowtime 
as time_to_security
FROM security_in s
LEFT JOIN check_in c WITHIN 1 HOUR
ON s.boardingpass_id=c.boardingpass_id;
© 2019 OpenCore GmbH & Co. KG 44
Passenger Leaves Security Area
{"security_area":"t1_2",
"count“:"1"}
security_out security_out_count
CREATE TABLE security_out_count 
AS SELECT security_area, sum(count) 
FROM security_out 
WINDOW TUMBLING (SIZE 24 hour)
GROUP BY security_area;
security_in_count
current_count
What is it good for?
• Capacity planning
• Wait tme predicton
• Passenger routng (apps & physical)
• Alertng on late passengers checking in
• …
SELECT 
  i.terminal AS terminal, 
  i.KSQL_COL_1 AS entry, 
  o.KSQL_COL_1 AS exit, 
  i.KSQL_COL_1 - o.KSQL_COL_1 AS 
waiting
FROM security_in_count i
INNER JOIN security_out_count o 
ON i.terminal=o.terminal;
© 2019 OpenCore GmbH & Co. KG 45
Passenger Located Via iBeacon
{"passenger":"smith",
"beacon_id":"t1_b123"}
security_duraton
security_in
dutyfree_joined
CREATE STREAM dutyfree_joined
AS SELECT c.boardingpass_id, d.passenger 
FROM dutyfree_in d 
LEFT JOIN security_in s WITHIN 1 HOURS 
ON s.passenger=d.passenger;
dutyfree_in
SELECT 
  d.boardingpass_id,
  d.d_passenger,
  d.rowtime - s.rowtime as 
time_in_security
FROM dutyfree_in_with_bc d 
LEFT JOIN security_in s WITHIN 1 HOUR 
ON d.boardingpass_id=s.boardingpass_id;
What is it good for?
• Refning wait tme predicton
• Targeted questonaire (fnd reasons for
outliers)
• Vouchers for huge delays
• …
© 2019 OpenCore GmbH & Co. KG 46
Purchase Event
{"boardingpass_id":"123",
"item_group":"cigarettes"}
iight_informaton
check_in
dutyfree_joined
What is it good for?
• Retail models
• Route to smoking area nearest to gate
• Advise of walk tme if tme is tght
• …
dutyfree_purchase
CREATE STREAM dutyfree_joined
AS SELECT 
  c.boardingpass_id, 
  c.passenger, 
  p.purchase_type, 
  f.gate
FROM dutyfree_purchase p
LEFT JOIN check_in c WITHIN 1 HOURS
ON c.passenger=p.passenger
LEFT JOIN flight_information f 
WITHIN 1 HOURS
ON f.flight_number = c.flight_number;
© 2019 OpenCore GmbH & Co. KG 47
Gate Change
expected_gate_arrival
notfcatons
expected_gate_departure
CREATE STREAM gate_wait_time
AS SELECT 
  a.flight,
  d.departure_time - a.arrival_time as wait_time
FROM expected_gate_arrival a
INNER JOIN expected_gate_departure d WITHIN 1 HOURS
ON a.gate=d.gate;
gate_wait_tme
gate_change
CREATE STREAM gate_change
AS SELECT 
  flight
FROM gate_wait_time
WHERE wait_time > 600000;
CREATE STREAM notifications
AS SELECT f.passenger
FROM gate_change g
LEFT JOIN flight_information f 
WITHIN 1 HOURS ON f.gate=g.gate;
iight_informaton
© 2019 OpenCore GmbH & Co. KG 48
Passenger Boards Plane
{"boardingpass_id":"123",
"status":"success"}
gate_in
What is it good for?
• Alert on bags without matching passengers
• Trigger unloading based on related events
• Gate closed
• Time based
• …
bags_joined
check_in baggage_loaded
CREATE STREAM bag_join
AS SELECT 
  c.passenger, 
  c.bags
FROM gate_in g
LEFT JOIN check_in c 
WITHIN 1 HOURS
ON c.boardingpass_id=g.boardingpass_id
LEFT JOIN baggage_loaded b 
WITHIN 1 HOURS
ON b.bag_id = c.bag_id;
Thank You!
© 2019 OpenCore GmbH & Co. KG

More Related Content

What's hot

Apache Kafka Landscape for Automotive and Manufacturing
Apache Kafka Landscape for Automotive and ManufacturingApache Kafka Landscape for Automotive and Manufacturing
Apache Kafka Landscape for Automotive and ManufacturingKai Wähner
 
Serverless London 2019 FaaS composition using Kafka and CloudEvents
Serverless London 2019   FaaS composition using Kafka and CloudEventsServerless London 2019   FaaS composition using Kafka and CloudEvents
Serverless London 2019 FaaS composition using Kafka and CloudEventsNeil Avery
 
Stream Computing & Analytics at Uber
Stream Computing & Analytics at UberStream Computing & Analytics at Uber
Stream Computing & Analytics at UberSudhir Tonse
 
Mainframe Integration, Offloading and Replacement with Apache Kafka
Mainframe Integration, Offloading and Replacement with Apache KafkaMainframe Integration, Offloading and Replacement with Apache Kafka
Mainframe Integration, Offloading and Replacement with Apache KafkaKai Wähner
 
Processing Real-Time Data at Scale: A streaming platform as a central nervous...
Processing Real-Time Data at Scale: A streaming platform as a central nervous...Processing Real-Time Data at Scale: A streaming platform as a central nervous...
Processing Real-Time Data at Scale: A streaming platform as a central nervous...confluent
 
Simplified Machine Learning Architecture with an Event Streaming Platform (Ap...
Simplified Machine Learning Architecture with an Event Streaming Platform (Ap...Simplified Machine Learning Architecture with an Event Streaming Platform (Ap...
Simplified Machine Learning Architecture with an Event Streaming Platform (Ap...Kai Wähner
 
Top 5 Event Streaming Use Cases for 2021 with Apache Kafka
Top 5 Event Streaming Use Cases for 2021 with Apache KafkaTop 5 Event Streaming Use Cases for 2021 with Apache Kafka
Top 5 Event Streaming Use Cases for 2021 with Apache KafkaKai Wähner
 
The Rise Of Event Streaming – Why Apache Kafka Changes Everything
The Rise Of Event Streaming – Why Apache Kafka Changes EverythingThe Rise Of Event Streaming – Why Apache Kafka Changes Everything
The Rise Of Event Streaming – Why Apache Kafka Changes EverythingKai Wähner
 
Telco 4.0 - Payment and FinServ Integration for Data in Motion with 5G and Ap...
Telco 4.0 - Payment and FinServ Integration for Data in Motion with 5G and Ap...Telco 4.0 - Payment and FinServ Integration for Data in Motion with 5G and Ap...
Telco 4.0 - Payment and FinServ Integration for Data in Motion with 5G and Ap...Kai Wähner
 
Enabling Smarter Cities and Connected Vehicles with an Event Streaming Platfo...
Enabling Smarter Cities and Connected Vehicles with an Event Streaming Platfo...Enabling Smarter Cities and Connected Vehicles with an Event Streaming Platfo...
Enabling Smarter Cities and Connected Vehicles with an Event Streaming Platfo...Kai Wähner
 
Apache Kafka and Blockchain - Comparison and a Kafka-native Implementation
Apache Kafka and Blockchain - Comparison and a Kafka-native ImplementationApache Kafka and Blockchain - Comparison and a Kafka-native Implementation
Apache Kafka and Blockchain - Comparison and a Kafka-native ImplementationKai Wähner
 
Apache Kafka for Automotive Industry, Mobility Services & Smart City
Apache Kafka for Automotive Industry, Mobility Services & Smart CityApache Kafka for Automotive Industry, Mobility Services & Smart City
Apache Kafka for Automotive Industry, Mobility Services & Smart CityKai Wähner
 
Connected Vehicles and V2X with Apache Kafka
Connected Vehicles and V2X with Apache KafkaConnected Vehicles and V2X with Apache Kafka
Connected Vehicles and V2X with Apache KafkaKai Wähner
 
HOP! Airlines Jets to Real Time
HOP! Airlines Jets to Real TimeHOP! Airlines Jets to Real Time
HOP! Airlines Jets to Real Timeconfluent
 
Apache Kafka and MQTT - Overview, Comparison, Use Cases, Architectures
Apache Kafka and MQTT - Overview, Comparison, Use Cases, ArchitecturesApache Kafka and MQTT - Overview, Comparison, Use Cases, Architectures
Apache Kafka and MQTT - Overview, Comparison, Use Cases, ArchitecturesKai Wähner
 
Confluent Operator as Cloud-Native Kafka Operator for Kubernetes
Confluent Operator as Cloud-Native Kafka Operator for KubernetesConfluent Operator as Cloud-Native Kafka Operator for Kubernetes
Confluent Operator as Cloud-Native Kafka Operator for KubernetesKai Wähner
 
Introduction to Apache NiFi dws19 DWS - DC 2019
Introduction to Apache NiFi   dws19 DWS - DC 2019Introduction to Apache NiFi   dws19 DWS - DC 2019
Introduction to Apache NiFi dws19 DWS - DC 2019Timothy Spann
 
Apache Kafka in the Automotive Industry (Connected Vehicles, Manufacturing 4....
Apache Kafka in the Automotive Industry (Connected Vehicles, Manufacturing 4....Apache Kafka in the Automotive Industry (Connected Vehicles, Manufacturing 4....
Apache Kafka in the Automotive Industry (Connected Vehicles, Manufacturing 4....Kai Wähner
 
IBM Cloud Pak for Integration with Confluent Platform powered by Apache Kafka
IBM Cloud Pak for Integration with Confluent Platform powered by Apache KafkaIBM Cloud Pak for Integration with Confluent Platform powered by Apache Kafka
IBM Cloud Pak for Integration with Confluent Platform powered by Apache KafkaKai Wähner
 

What's hot (20)

RabbitMQ & Kafka
RabbitMQ & KafkaRabbitMQ & Kafka
RabbitMQ & Kafka
 
Apache Kafka Landscape for Automotive and Manufacturing
Apache Kafka Landscape for Automotive and ManufacturingApache Kafka Landscape for Automotive and Manufacturing
Apache Kafka Landscape for Automotive and Manufacturing
 
Serverless London 2019 FaaS composition using Kafka and CloudEvents
Serverless London 2019   FaaS composition using Kafka and CloudEventsServerless London 2019   FaaS composition using Kafka and CloudEvents
Serverless London 2019 FaaS composition using Kafka and CloudEvents
 
Stream Computing & Analytics at Uber
Stream Computing & Analytics at UberStream Computing & Analytics at Uber
Stream Computing & Analytics at Uber
 
Mainframe Integration, Offloading and Replacement with Apache Kafka
Mainframe Integration, Offloading and Replacement with Apache KafkaMainframe Integration, Offloading and Replacement with Apache Kafka
Mainframe Integration, Offloading and Replacement with Apache Kafka
 
Processing Real-Time Data at Scale: A streaming platform as a central nervous...
Processing Real-Time Data at Scale: A streaming platform as a central nervous...Processing Real-Time Data at Scale: A streaming platform as a central nervous...
Processing Real-Time Data at Scale: A streaming platform as a central nervous...
 
Simplified Machine Learning Architecture with an Event Streaming Platform (Ap...
Simplified Machine Learning Architecture with an Event Streaming Platform (Ap...Simplified Machine Learning Architecture with an Event Streaming Platform (Ap...
Simplified Machine Learning Architecture with an Event Streaming Platform (Ap...
 
Top 5 Event Streaming Use Cases for 2021 with Apache Kafka
Top 5 Event Streaming Use Cases for 2021 with Apache KafkaTop 5 Event Streaming Use Cases for 2021 with Apache Kafka
Top 5 Event Streaming Use Cases for 2021 with Apache Kafka
 
The Rise Of Event Streaming – Why Apache Kafka Changes Everything
The Rise Of Event Streaming – Why Apache Kafka Changes EverythingThe Rise Of Event Streaming – Why Apache Kafka Changes Everything
The Rise Of Event Streaming – Why Apache Kafka Changes Everything
 
Telco 4.0 - Payment and FinServ Integration for Data in Motion with 5G and Ap...
Telco 4.0 - Payment and FinServ Integration for Data in Motion with 5G and Ap...Telco 4.0 - Payment and FinServ Integration for Data in Motion with 5G and Ap...
Telco 4.0 - Payment and FinServ Integration for Data in Motion with 5G and Ap...
 
Enabling Smarter Cities and Connected Vehicles with an Event Streaming Platfo...
Enabling Smarter Cities and Connected Vehicles with an Event Streaming Platfo...Enabling Smarter Cities and Connected Vehicles with an Event Streaming Platfo...
Enabling Smarter Cities and Connected Vehicles with an Event Streaming Platfo...
 
Apache Kafka and Blockchain - Comparison and a Kafka-native Implementation
Apache Kafka and Blockchain - Comparison and a Kafka-native ImplementationApache Kafka and Blockchain - Comparison and a Kafka-native Implementation
Apache Kafka and Blockchain - Comparison and a Kafka-native Implementation
 
Apache Kafka for Automotive Industry, Mobility Services & Smart City
Apache Kafka for Automotive Industry, Mobility Services & Smart CityApache Kafka for Automotive Industry, Mobility Services & Smart City
Apache Kafka for Automotive Industry, Mobility Services & Smart City
 
Connected Vehicles and V2X with Apache Kafka
Connected Vehicles and V2X with Apache KafkaConnected Vehicles and V2X with Apache Kafka
Connected Vehicles and V2X with Apache Kafka
 
HOP! Airlines Jets to Real Time
HOP! Airlines Jets to Real TimeHOP! Airlines Jets to Real Time
HOP! Airlines Jets to Real Time
 
Apache Kafka and MQTT - Overview, Comparison, Use Cases, Architectures
Apache Kafka and MQTT - Overview, Comparison, Use Cases, ArchitecturesApache Kafka and MQTT - Overview, Comparison, Use Cases, Architectures
Apache Kafka and MQTT - Overview, Comparison, Use Cases, Architectures
 
Confluent Operator as Cloud-Native Kafka Operator for Kubernetes
Confluent Operator as Cloud-Native Kafka Operator for KubernetesConfluent Operator as Cloud-Native Kafka Operator for Kubernetes
Confluent Operator as Cloud-Native Kafka Operator for Kubernetes
 
Introduction to Apache NiFi dws19 DWS - DC 2019
Introduction to Apache NiFi   dws19 DWS - DC 2019Introduction to Apache NiFi   dws19 DWS - DC 2019
Introduction to Apache NiFi dws19 DWS - DC 2019
 
Apache Kafka in the Automotive Industry (Connected Vehicles, Manufacturing 4....
Apache Kafka in the Automotive Industry (Connected Vehicles, Manufacturing 4....Apache Kafka in the Automotive Industry (Connected Vehicles, Manufacturing 4....
Apache Kafka in the Automotive Industry (Connected Vehicles, Manufacturing 4....
 
IBM Cloud Pak for Integration with Confluent Platform powered by Apache Kafka
IBM Cloud Pak for Integration with Confluent Platform powered by Apache KafkaIBM Cloud Pak for Integration with Confluent Platform powered by Apache Kafka
IBM Cloud Pak for Integration with Confluent Platform powered by Apache Kafka
 

Similar to Serving the Real-Time Data Needs of an Airport with Kafka Streams and KSQL

Meetup: Streaming Data Pipeline Development
Meetup:  Streaming Data Pipeline DevelopmentMeetup:  Streaming Data Pipeline Development
Meetup: Streaming Data Pipeline DevelopmentTimothy Spann
 
The Current And Future State Of Service Mesh
The Current And Future State Of Service MeshThe Current And Future State Of Service Mesh
The Current And Future State Of Service MeshRam Vennam
 
Creating serverless APIs for marine traffic
Creating serverless APIs for marine trafficCreating serverless APIs for marine traffic
Creating serverless APIs for marine trafficMassimoPrencipe6
 
Cloud computing-2 (1)
Cloud computing-2 (1)Cloud computing-2 (1)
Cloud computing-2 (1)JUDYFLAVIAB
 
Event Horizon at Solace Connect Singapore
Event Horizon at Solace Connect SingaporeEvent Horizon at Solace Connect Singapore
Event Horizon at Solace Connect SingaporeSolace
 
Hong Kong User Group 2019
Hong Kong User Group 2019Hong Kong User Group 2019
Hong Kong User Group 2019Solace
 
Breaking Up the Monolith While Migrating to AWS (GPSTEC320) - AWS re:Invent 2018
Breaking Up the Monolith While Migrating to AWS (GPSTEC320) - AWS re:Invent 2018Breaking Up the Monolith While Migrating to AWS (GPSTEC320) - AWS re:Invent 2018
Breaking Up the Monolith While Migrating to AWS (GPSTEC320) - AWS re:Invent 2018Amazon Web Services
 
Enabling Event Driven Architecture with PubSub+
Enabling Event Driven Architecture with PubSub+Enabling Event Driven Architecture with PubSub+
Enabling Event Driven Architecture with PubSub+Himanshu Gupta
 
Running Consul on Kubernetes and Beyond
Running Consul on Kubernetes and BeyondRunning Consul on Kubernetes and Beyond
Running Consul on Kubernetes and BeyondMitchell Pronschinske
 
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...Henning Jacobs
 
Driving Efficiency with Splunk Cloud at Gatwick Airport
Driving Efficiency with Splunk Cloud at Gatwick AirportDriving Efficiency with Splunk Cloud at Gatwick Airport
Driving Efficiency with Splunk Cloud at Gatwick AirportSplunk
 
IoT Connected Brewery
IoT Connected BreweryIoT Connected Brewery
IoT Connected BreweryJason Hubbard
 
Cloud Native Applications for Cloud Foundry using Spring Cloud : A Workshop
Cloud Native Applications for Cloud Foundry using Spring Cloud : A WorkshopCloud Native Applications for Cloud Foundry using Spring Cloud : A Workshop
Cloud Native Applications for Cloud Foundry using Spring Cloud : A WorkshopCorneil du Plessis
 
BigDataFest_ Building Modern Data Streaming Apps
BigDataFest_  Building Modern Data Streaming AppsBigDataFest_  Building Modern Data Streaming Apps
BigDataFest_ Building Modern Data Streaming Appsssuser73434e
 
big data fest building modern data streaming apps
big data fest building modern data streaming appsbig data fest building modern data streaming apps
big data fest building modern data streaming appsTimothy Spann
 
AWS for Manufacturing: Digital Transformation throughout the Value Chain (MFG...
AWS for Manufacturing: Digital Transformation throughout the Value Chain (MFG...AWS for Manufacturing: Digital Transformation throughout the Value Chain (MFG...
AWS for Manufacturing: Digital Transformation throughout the Value Chain (MFG...Amazon Web Services
 
cloudintroduction.ppt
cloudintroduction.pptcloudintroduction.ppt
cloudintroduction.pptAhmedRebai8
 

Similar to Serving the Real-Time Data Needs of an Airport with Kafka Streams and KSQL (20)

Meetup: Streaming Data Pipeline Development
Meetup:  Streaming Data Pipeline DevelopmentMeetup:  Streaming Data Pipeline Development
Meetup: Streaming Data Pipeline Development
 
Machine Learning with Apache Spark
Machine Learning with Apache SparkMachine Learning with Apache Spark
Machine Learning with Apache Spark
 
The Current And Future State Of Service Mesh
The Current And Future State Of Service MeshThe Current And Future State Of Service Mesh
The Current And Future State Of Service Mesh
 
From Monolith to Microservices
From Monolith to MicroservicesFrom Monolith to Microservices
From Monolith to Microservices
 
Creating serverless APIs for marine traffic
Creating serverless APIs for marine trafficCreating serverless APIs for marine traffic
Creating serverless APIs for marine traffic
 
Cloud computing-2 (1)
Cloud computing-2 (1)Cloud computing-2 (1)
Cloud computing-2 (1)
 
Event Horizon at Solace Connect Singapore
Event Horizon at Solace Connect SingaporeEvent Horizon at Solace Connect Singapore
Event Horizon at Solace Connect Singapore
 
Hong Kong User Group 2019
Hong Kong User Group 2019Hong Kong User Group 2019
Hong Kong User Group 2019
 
Breaking Up the Monolith While Migrating to AWS (GPSTEC320) - AWS re:Invent 2018
Breaking Up the Monolith While Migrating to AWS (GPSTEC320) - AWS re:Invent 2018Breaking Up the Monolith While Migrating to AWS (GPSTEC320) - AWS re:Invent 2018
Breaking Up the Monolith While Migrating to AWS (GPSTEC320) - AWS re:Invent 2018
 
Enabling Event Driven Architecture with PubSub+
Enabling Event Driven Architecture with PubSub+Enabling Event Driven Architecture with PubSub+
Enabling Event Driven Architecture with PubSub+
 
Running Consul on Kubernetes and Beyond
Running Consul on Kubernetes and BeyondRunning Consul on Kubernetes and Beyond
Running Consul on Kubernetes and Beyond
 
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
Why Kubernetes? Cloud Native and Developer Experience at Zalando - OWL Tech &...
 
Driving Efficiency with Splunk Cloud at Gatwick Airport
Driving Efficiency with Splunk Cloud at Gatwick AirportDriving Efficiency with Splunk Cloud at Gatwick Airport
Driving Efficiency with Splunk Cloud at Gatwick Airport
 
IoT Connected Brewery
IoT Connected BreweryIoT Connected Brewery
IoT Connected Brewery
 
Cloud Native Applications for Cloud Foundry using Spring Cloud : A Workshop
Cloud Native Applications for Cloud Foundry using Spring Cloud : A WorkshopCloud Native Applications for Cloud Foundry using Spring Cloud : A Workshop
Cloud Native Applications for Cloud Foundry using Spring Cloud : A Workshop
 
lect15_cloud.ppt
lect15_cloud.pptlect15_cloud.ppt
lect15_cloud.ppt
 
BigDataFest_ Building Modern Data Streaming Apps
BigDataFest_  Building Modern Data Streaming AppsBigDataFest_  Building Modern Data Streaming Apps
BigDataFest_ Building Modern Data Streaming Apps
 
big data fest building modern data streaming apps
big data fest building modern data streaming appsbig data fest building modern data streaming apps
big data fest building modern data streaming apps
 
AWS for Manufacturing: Digital Transformation throughout the Value Chain (MFG...
AWS for Manufacturing: Digital Transformation throughout the Value Chain (MFG...AWS for Manufacturing: Digital Transformation throughout the Value Chain (MFG...
AWS for Manufacturing: Digital Transformation throughout the Value Chain (MFG...
 
cloudintroduction.ppt
cloudintroduction.pptcloudintroduction.ppt
cloudintroduction.ppt
 

Recently uploaded

Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfChristopherTHyatt
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastUXDXConf
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfFIDO Alliance
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Buy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfBuy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfEasyPrinterHelp
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessUXDXConf
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty SecureFemke de Vroome
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 

Recently uploaded (20)

Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Buy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfBuy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdf
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 

Serving the Real-Time Data Needs of an Airport with Kafka Streams and KSQL

  • 1. Stream Processing Airport Data Sönke Liebau – Co-Founder and Partner @ OpenCore January 10th 2019 Serving the Real-Time Data Needs of an Airport with Kafa Streams and KSQL
  • 2. Who Am I? • Partner & Co-Founder at • Small consultng company with a Big Data & Open Source focus • First producton Kafa deployment in 2014 Website: www.opencore.com soenke.liebau@opencore.com htps:/p/pwww.linkedin.com/pin/psoenkeliebau/p @soenkeliebau
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 13. Source: htps:/p/pkafa.apache.org/p20/pdocumentaton/pstreams/p 13 What Is Kafka Streams? “The easiest way to write mission-critcal real-tme applicatons and microservices” “Kafa Streams is a client library for building applicatons and microservices, where the input and output data are stored in Kafa clusters. “
  • 14. What Is KSQL? Confluent S QL is the open source, streaming QL engine that enables real-tme data processing against Apache Safaa Source: htps:/p/pwww.coniuent.io/pproduct/pksql/p 14
  • 15. © 2019 OpenCore GmbH & Co. KG 15 Kafka Streams & KSQL In The Ecosystem Sources KafaConnect KafaConnect Destnatons Kafa Streams Jobs
  • 16. © 2019 OpenCore GmbH & Co. KG 18 The Big Diference
  • 17. 20 Using Kafka Streams final Serde<String> stringSerde = Serdes.String(); final Serde<Long> longSerde = Serdes.Long();   KStream<String, String> textLines = builder.stream("streams-plaintext-input",     Consumed.with(stringSerde, stringSerde);   KTable<String, Long> wordCounts = textLines     .fatMapValues(value -> Arrays.asList(value.toLowerCase().split("W+")))      .groupBy((key, value) -> value)      .count()   wordCounts.toStream().to("streams-wordcount-output", Produced.with(Serdes.String(), Serdes.Long()));   Source: htps:/p/pkafa.apache.org/p20/pdocumentaton/pstreams/pquickstart
  • 18. 21 Using Kafka Streams final Serde<String> stringSerde = Serdes.String(); final Serde<Long> longSerde = Serdes.Long();   KStream<String, String> textLines = builder.stream("streams-plaintext- input",     Consumed.with(stringSerde, stringSerde);   KTable<String, Long> wordCounts = textLines     .fatMapValues(value -> Arrays.asList(value.toLowerCase().split("W+")))      .groupBy((key, value) -> value)      .count()   wordCounts.toStream().to("streams-wordcount-output", Produced.with(Serdes.String(), Serdes.Long()));   Source: htps:/p/pkafa.apache.org/p20/pdocumentaton/pstreams/pquickstart …
  • 19. © 2019 OpenCore GmbH & Co. KG 22 Using KSQL RestInterface CLI Rest Client SELECT * FROM security_in WHERE status=’success’  AND terminal=’t1’;
  • 20. 23 Running A KSQL Statement
  • 21. © 2017 OpenCore GmbH & Co. KG 24 The Competition
  • 22. Safa treams S QL When To Use Which? • Ofers lower level access • More data formats supported • Queryable state • Problems that cannot be expressed in SQL • Easier for people used to SQL • No need for additonal orchestraton • Data exploraton © 2019 OpenCore GmbH & Co. KG 25
  • 23. Our Airport © 2017 OpenCore GmbH & Co. KG 26
  • 24. © 2017 OpenCore GmbH & Co. KG 27 A Few Facts Up Front • A lot of independent data sources • Airline tcketng • Baggage transport system • Passenger countng • Retail • Radar • Weather • … • Spread over multple companies • Many legacy interfaces
  • 25. © 2019 OpenCore GmbH & Co. KG 28 Integrations Operatons Database External System External System External System External System External System External System
  • 26. © 2019 OpenCore GmbH & Co. KG 29 Isolated Islands Of Data • A lot of isolated data stores to provide data for necessary solutons • Spiderweb of integratons • Operatonal DB needs to push data to a lot of systems • Many diferent formats
  • 27. © 2019 OpenCore GmbH & Co. KG 31 The Dream … Weird binary source XML Source Destnaton Destnaton Destnaton Raw Source Processed RestStream Processing
  • 28. © 2019 OpenCore GmbH & Co. KG 32 Ingest Transformation - Kafka Streams StreamsBuilder builder = new StreamsBuilder(); Serde<ProprietaryObject> weirdFormatSerde = new ProprietaryWeirdFormatSerde(); Serde<ProprietaryObject> avroSerde = new ProprietaryAvroSerde();   builder.stream(“proprietary_input_topic",     Consumed.with(         Serdes.String(),         weirdFormatSerde))     .to("avro_output_topic",         Produced.with(             Serdes.String(),             avroSerde));
  • 29. 33 Ingest Transformation - KSQL ksql> CREATE STREAM source (uid INT, name VARCHAR) WITH (KAFKA_TOPIC='mysql_users', VALUE_FORMAT='JSON‘); ksql> CREATE STREAM target_avro WITH (VALUE_FORMAT='AVRO', KAFKA_TOPIC='mysql_users_avro') AS SELECT * FROM source; Source: htps:/p/pgist.github.com/prmof/p165b05e4554c41719b71f1a47ee7b113
  • 30. © 2019 OpenCore GmbH & Co. KG 34 Stream Processing • Stream processing jobs read converted avro topics and create enriched topics/palerts/p… by • Joining streams • Aggregatng streams • Filtering or alertng on streams • …
  • 31. © 2019 OpenCore GmbH & Co. KG 35 DISCLAIMER
  • 32. © 2019 OpenCore GmbH & Co. KG 36 Gate Changes • Gate changes can be based on diferent informaton • Delays of the incoming iight • Changes on other outgoing iights • … • Join relevant streams and publish change events that are consumed by • Apps • Gate monitors • Departure boards • …
  • 33. © 2019 OpenCore GmbH & Co. KG 37 Passenger Count • Join stream of tckets scanned before line to security check and camera count of passengers leaving security check to estmate number of waitng passengers • Change routng of passengers (physical: signs change & digital: diferent routng in app) • Also consumed by • Monitors to display predicted waitng tme • App to display predicted wait tme • Prediciton systems to feed models for capacity planning • Models to predict if a passenger might miss his iight -> reroute to priority lane
  • 34. © 2019 OpenCore GmbH & Co. KG 38 Wait Time • Calculate how long a passenger took to clear the security checkpoint by joining when he scanned his boarding pass and when he is frst spoted by an iBeacon beyond security • Push ofers based on wait tme and iight tme • Long wait, lot of tme tll take-of -> free cofee or sandwich • Long wait, short tme tll take-of -> duty free voucher • …
  • 35. © 2019 OpenCore GmbH & Co. KG 39 Baggage Notifcation • Baggage containers are scanned when they are loaded/punloaded • By joining this with data from the baggage sorter passengers could receive push notfcatons when their luggage is loaded/punloaded into/pfrom the plane
  • 36. © 2019 OpenCore GmbH & Co. KG 40 Arrival At Gate • There are complex models running to estmate when the plane will arrive at the gate afer it has landed • Based on ground radar data • Can be used to • Predict whether the following iight might be delayed • Coordinate cleaning crews • Coordinate refueling • Feed into gate change decisions
  • 37. © 2019 OpenCore GmbH & Co. KG 41 An Example Flow {"boardingpass_id":"123", "passenger“:"smith", "flight_number":"LH454“, “checked_bags”:1} {"boardingpass_id":"123", "security_area":"t1_2", "status":"success"} {"security_area":"t1_2", "count":"1"} {"passenger":"smith", "beacon_id":"t1_b123"} {"boardingpass_id":"123",  "item_group":"cigarettes"} {"boardingpass_id":"123", "status":"success"} {"flight_no":"LH454", “runway":“1north"} {“old_gate":“a12”,  “new_gate":“e50"}
  • 38. © 2019 OpenCore GmbH & Co. KG 42 Check-In Event {"boardingpass_id":"123", "passenger":"smith", "flight_number":"LH454“, “terminal”:“terminal1” } check_in_count CREATE TABLE check_in_count AS SELECT terminal, count(terminal) FROM security_in  WINDOW TUMBLING (SIZE 24 hour) GROUP BY terminal; check_in What is it good for? • Early warning for security capacity • „Don‘t dawdle“ warning based on security queues
  • 39. © 2019 OpenCore GmbH & Co. KG 43 Passenger Enters Security Area {"boardingpass_id":"123", "security_area":"t1_2", "status" : "success"} security_in_count CREATE TABLE security_in_count AS SELECT    security_area,    count(security_area) FROM security_in  WINDOW TUMBLING (SIZE 24 hour) WHERE status='success' GROUP BY security_area; security_in What is it good for? • Monitor for failed atempts • Passenger routng to security • Unload baggage of late passengers • … tme_to_security SELECT    s.boardingpass_id, c.rowtime - s.rowtime  as time_to_security FROM security_in s LEFT JOIN check_in c WITHIN 1 HOUR ON s.boardingpass_id=c.boardingpass_id;
  • 40. © 2019 OpenCore GmbH & Co. KG 44 Passenger Leaves Security Area {"security_area":"t1_2", "count“:"1"} security_out security_out_count CREATE TABLE security_out_count  AS SELECT security_area, sum(count)  FROM security_out  WINDOW TUMBLING (SIZE 24 hour) GROUP BY security_area; security_in_count current_count What is it good for? • Capacity planning • Wait tme predicton • Passenger routng (apps & physical) • Alertng on late passengers checking in • … SELECT    i.terminal AS terminal,    i.KSQL_COL_1 AS entry,    o.KSQL_COL_1 AS exit,    i.KSQL_COL_1 - o.KSQL_COL_1 AS  waiting FROM security_in_count i INNER JOIN security_out_count o  ON i.terminal=o.terminal;
  • 41. © 2019 OpenCore GmbH & Co. KG 45 Passenger Located Via iBeacon {"passenger":"smith", "beacon_id":"t1_b123"} security_duraton security_in dutyfree_joined CREATE STREAM dutyfree_joined AS SELECT c.boardingpass_id, d.passenger  FROM dutyfree_in d  LEFT JOIN security_in s WITHIN 1 HOURS  ON s.passenger=d.passenger; dutyfree_in SELECT    d.boardingpass_id,   d.d_passenger,   d.rowtime - s.rowtime as  time_in_security FROM dutyfree_in_with_bc d  LEFT JOIN security_in s WITHIN 1 HOUR  ON d.boardingpass_id=s.boardingpass_id; What is it good for? • Refning wait tme predicton • Targeted questonaire (fnd reasons for outliers) • Vouchers for huge delays • …
  • 42. © 2019 OpenCore GmbH & Co. KG 46 Purchase Event {"boardingpass_id":"123", "item_group":"cigarettes"} iight_informaton check_in dutyfree_joined What is it good for? • Retail models • Route to smoking area nearest to gate • Advise of walk tme if tme is tght • … dutyfree_purchase CREATE STREAM dutyfree_joined AS SELECT    c.boardingpass_id,    c.passenger,    p.purchase_type,    f.gate FROM dutyfree_purchase p LEFT JOIN check_in c WITHIN 1 HOURS ON c.passenger=p.passenger LEFT JOIN flight_information f  WITHIN 1 HOURS ON f.flight_number = c.flight_number;
  • 43. © 2019 OpenCore GmbH & Co. KG 47 Gate Change expected_gate_arrival notfcatons expected_gate_departure CREATE STREAM gate_wait_time AS SELECT    a.flight,   d.departure_time - a.arrival_time as wait_time FROM expected_gate_arrival a INNER JOIN expected_gate_departure d WITHIN 1 HOURS ON a.gate=d.gate; gate_wait_tme gate_change CREATE STREAM gate_change AS SELECT    flight FROM gate_wait_time WHERE wait_time > 600000; CREATE STREAM notifications AS SELECT f.passenger FROM gate_change g LEFT JOIN flight_information f  WITHIN 1 HOURS ON f.gate=g.gate; iight_informaton
  • 44. © 2019 OpenCore GmbH & Co. KG 48 Passenger Boards Plane {"boardingpass_id":"123", "status":"success"} gate_in What is it good for? • Alert on bags without matching passengers • Trigger unloading based on related events • Gate closed • Time based • … bags_joined check_in baggage_loaded CREATE STREAM bag_join AS SELECT    c.passenger,    c.bags FROM gate_in g LEFT JOIN check_in c  WITHIN 1 HOURS ON c.boardingpass_id=g.boardingpass_id LEFT JOIN baggage_loaded b  WITHIN 1 HOURS ON b.bag_id = c.bag_id;
  • 45. Thank You! © 2019 OpenCore GmbH & Co. KG