SlideShare a Scribd company logo
Closing the Loop in Extended
Reality with Kafka Streams and
Machine Learning
Rob Drysdale | Senior Principal | robert.drysdale@accenture.com
Sarah Healy | Software Engineer | s.healy@accenture.com
The Dock is Accenture’s flagship
R&D and Global Innovation
Centre
300+ multi-disciplinary team
42% female
35+ nationalities
142 patents filed
Based in Silicon Docks, Dublin.
A hub for many global tech companies
• Extended reality in mainstream
• XR Insights : Usecase
• Building Generic Streaming Platform: Architectureand Schema
• Deep dive into our implementation
• Machine Learning 101 : Finding Patterns
• Learnings & Takeaways
• Demo
Agenda
XR Industry
• Exponential Growth
• Industry Adoption:
• Healthcare
• Aviation
• Education & Training
• Retail & Advertising
• Training: VR
• Safer Healthcare
• Cheaper
• Monitorable
• On-the-job: AR
• Future Worker
• Hands-free Manuals
• Remote Guidance
• Automated Guidance
• Prediction/Prevention
A Streaming platform with capability to
plug & play VR/AR devices and ML models.
XR Insights
Data Stream Capture:
• State Stream
• Event Stream
Data Analyses:
• Data-Driven User Assessment:
o Improving Accuracy of Assessment
o Removing Subjectivity of Assessment
• Insights on Performance and behaviour
• Personalise Training
• Improve Work/Training Process
• Predict/Guide User behaviour
TrainingData
WebSocket
Server
(STOMP)
/topic/feedback
XR Insights
/app/state
/app/event
Kafka
Producer
Kafka
Consumer
Kafka Stream Data Transformations
Kafka Connect
Master DB
BuildingML Model
Model & Features
S3 Bucket
Production ML Model
Personalization
Real Time Reporting
XR Devices
• Speed of Data Transmation
• Consumer Groups
• Easy Embedding of Kafka clients in existing servicedeployments
• Avro Schema support
• Clients for Java & Python
• Eventdriven & supportto query on real-time data
Why Kafka Streams?
Kafka
Producer
Kafka
Consumer
Schema Registry
XR Devices
Schema Registry: Single point of Success
• Kubernetes 1.13 & Docker (Statefulsets)
• Spring boot with WebSocket + STOMP
• Unity & C#
• Kafka 2.1.0, Kafka Streams DSL
• Schema Registry, Avro, ConnectCluster
• Couchbase, Grafana, Elastic search
Technologies
{
"type": "record",
"namespace": "com.accenture",
"name": "Event",
"version": "1",
"fields": [
{ "name": "eventId", "type": "string", "doc": "Unique Id per record" },
{ "name": "sessionId", "type":"string", "doc": "session Id per record" },
{ "name": "timestamp", "type": "float", "doc": "Timestamp of Event" },
{ "name": "type", "type": "string", "doc" : "Type of Event" },
{ "name": "name", "type": "string", "doc": "Name of Event" },
{ "name": "desc", "type": {"type": "map", "values": "string"} , "doc":
"description of event"}
]
}
{
"topic":"event-topic",
"key":"d433b1db-4f89-4128-896f-95ac204b8681",
"value":{
"eventId":"d433b1db-4f89-4128-896f-95ac204b8681",
"sessionId":"13937ec1-82e1-4071-a6e7-31d31674de25",
"timestamp":148.45999,
"type":"Error",
"name":"Drop",
"desc":{
"collided":"Floor",
"Task id":"0",
"point of contact":"(1.1 1.0 -1.1)",
"lhand":"NA",
"collider":"spray_bottle",
"rhand":"NA"
}
},
"partition":2,
"offset":10
}
Event Schema: Example
{
"type": "record",
"namespace": "com.accenture",
"name": "State",
"version": "1",
"fields": [
{ "name": "stateId", "type":["null", "string"], doc:”NA” },
{ "name": "sessionId", "type":["null", "string"], "doc": ”NA" },
{ "name": "timestamp", "type": "double", "doc": ”NA" },
{ "name": "task", "type": "long", "doc": ”NA" },
{ "name": "subtask", "type":["null", "string"], "doc": ”NA" },
{ "name": "lx", "type": "double", "doc": "NA" },
{ "name": "ly", "type": "double", "doc": "NA" },
{ "name": "lz", "type": "double", "doc": "NA" },
{ "name": "rx", "type": "double", "doc": "NA" },
{ "name": "ry", "type": "double", "doc": "NA" },
{ "name": "rz", "type": "double", "doc": "NA" },
{ "name": "hx", "type": "double", "doc": "NA" },
{ "name": "hy", "type": "double", "doc": "NA" },
{ "name": "hz", "type": "double", "doc": "NA" },
{ "name": "rItemHeld", "type":["null", "string"], "doc": "NA"}
{ "name": "lItemHeld", "type":["null", "string"], "doc": "NA"},
{ "name": "ltrigger", "type":["null", "boolean"], "doc": "NA"},
{ "name": "rtrigger", "type":["null", "boolean"], "doc": "NA"} ]
}
{
"topic":"state-topic",
"key":"13937ec1-82e1-4071-a6e7-31d31674de25",
"value":{
"stateId":{
"string":"cdfc5d94-3f1e-404a-ba27-632b3616dbfd"
},
"sessionId":{
"string":"13937ec1-82e1-4071-a6e7-31d31674de25"
},
"timestamp":126.98802185058594,
"task":0,
"subtask":{
"string":"0"
},
"lx":0.6099972724914551,
"ly":2.122999906539917,
"lz":-0.22100147604942322,
"rx":0.9099972248077393,
"ry":2.122999906539917,
"rz":-0.22099855542182922,
"hx":0.8208140134811401,
"hy":2.4463324546813965,
"hz":0.6848392486572266,
"rItemHeld":null
"lItemHeld":null,
"partition":2,
"offset":15
}
}
State Schema: Example
1. Maven Plugin to generate Java Classes for Avro Schema: org.apache.avro.avro-maven-plugin
2. Parse STOMP messages as Generic Avro Record.
Inspired by stackoverflow answer from @lucapette here
eventSchemaPath = IOUtils.toString(classLoader.getResourceAsStream("event.avsc"));
Schema eventSchemaParser =parser.parse(eventSchemaPath);
@MessageMapping("/event")
public void pushEvents(Eventevent){
String key=event.getSessionId();
GenericRecord eventAvroRecord=mapObjectToRecord(event, eventSchemaParser);
ProducerRecord<Object,Object>record =new ProducerRecord<>(config.getEventTopicName(), event.getSessionId(),
eventAvroRecord);
}
public GenericData.Record mapObjectToRecord(Objectobject,Schema schema) {
final GenericData.Record record =new GenericData.Record(schema);
schema.getFields().forEach(r->record.put(r.name(),PropertyAccessorFactory.forDirectFieldAccess(object).getPropertyValue(r.name())));
return record;
}
KAFKA Producer: Generic Avro Record
Using GlobalKTable to maintain user's active status
String[] state = {"GameStart","GameEnd"};
valueGenericAvroSerde.configure(serdeConfig, false); // `false` for record values
StreamsBuilder builder = new StreamsBuilder();
builder.stream("event-topic", Consumed.with(keySerde,valueGenericAvroSerde))
.map((key,value) -> KeyValue.pair(value.get("sessionId").toString(),value.get("name").toString()))
.filter((key,value) -> Arrays.stream(state).anyMatch(value::equalsIgnoreCase))
.to("user-status");
GlobalKTable<String, String> userStatusTable=builder.globalTable("user-status",Consumed.with(Serdes.String(),
Serdes.String()),Materialized.as(”active-user-status"));
final KafkaStreams streams = new KafkaStreams(builder.build(), streamsConfiguration);
streams.cleanUp();
streams.start();
Active User Status: GlobalKTable
ML 101: Finding Patterns
Mining Association Rules Based on
Apriori Algorithm
Problems
• One hot Encoding Numeric Data
• Updating the model needs to update the application.
• Computational Complexity Problem.
Prediction Pattern:
• Understanding Past User Behavior
• Personalization of current User
Events:
• No. of Frames
• No. of Tasks
• Grip Right
• Grip Left
• Trigger Right
• Trigger Left
• Both Right
• Both Left
• Only Uses One Hand
• No. of Drops
• No. of Incorrect Objects Picked Up
• No. of times looking at trainer
Derived Events:
• No. of times not looking at object of interest
• Hands moving towards/away from object of interest:
• This is not an once-off event, but runs over time through the task.
• Hands jittering
• Picking up the wrong item
• Touching the wrong item
• Dropping an object
• Hitting an object (including surfaces or hood)
• Facing away from Objects of interest
• Task Start/End
For creating association rules, algorithm needs a
boolean matrix as a parameter. Because of this user /
event count data should be converted a boolean
matrix.
Data Encoding Challenge
PossibleApproaches
• Thresholding
• Ranging
• Bucketing
• Smart Bucketing
Colour Red Yellow Green
Red
Red
Yellow
Yellow
Green
1 0 0
1 0 0
0 1 0
0 0 1
Predicting Responses:
eventStream.join(activeUserGlobalKTable,
(session, event) -> event.getSessionId(),
(event, userStatus) -> model.predict(event, userStatus))
.filter((key , response) -> response.getMessageText()!=null)
.to("response-topic");
{
"type": "record",
"namespace": "com.accenture",
"name": "Response",
"version": "1",
"fields": [
{ "name": "responseId", "type": "string", "doc": "Unique Id per record" },
{ "name": "sessionId", "type": "string", "doc": "session Id per record" },
{ "name": "action", "type": "string", "doc": "NA" },
{ "name": "severity", "type": "int", "doc" : "NA" },
{ "name": "messageText", "type": "string", "doc": "NA" },
{ "name": "messageType", "type": "string", "doc": "predefined message types"},
{ "name": "messageObject", "type": "string" , "doc": "description of event"}
]
}
Response Schema
Low Latency Predictions: Kafka Producers in Python
oarp = OnlineAssociationRulePrediction()
try:
oarp.initialize_model(application_id, Config.S3_ADDRESS,Config.S3_KEY,Config.S3_SECRET)
except:
print("no model")
execute = False
while (execute):
event_msg = event_consumer.poll(600000)
state_msg = state_consumer.poll(600000)
eventRecord = decode_message(event_msg, event_schema)
stateRecord = decode_message(state_msg, state_schema)
append_windowed_df(state_msg)
analytics_response= oarp.predict(state_data=state_df, event_data=event_df)
# Return responseto Unity
key = {"name": eventRecord["sessionId"]}
for responseinanalytics_response:
value = {"responseId": str(uuid.uuid4()), "sessionId": eventRecord["sessionId"], "action": response["action"],"severity":
response["severity"], "messageText": response["messageText"], "messageObject":
response["messageObject"], "messageType": response["messageType"] }
avro_producer.produce(topic=Config.RESPONSE_TOPIC, value=value, key=key)
public void run(String... strings)
{
final Properties streamsConfiguration =newProperties();
streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,Serdes.String().getClass());
streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, GenericAvroSerde.class);
KStream<String, GenericRecord>responseStream =builder.stream(“response-topic”,
Consumed.with(keySerde,valueGenericAvroSerde));
responseStream.foreach((key,value)->publishToVR(key,value.toString()));
final KafkaStreams streams =newKafkaStreams(builder.build(), streamsConfiguration);
streams.start();
Runtime.getRuntime().addShutdownHook(new Thread(streams::close));
}
public void publishToVR(String sessionId,String message)
{
brokerMessagingTemplate.convertAndSendToUser(sessionId,"/topics/feedback",JSON.toJSON(message));
}
Stream Response: Generic Avro Record
Challenges and Learnings
• Handling Multi-tenancy in streaming
• Pushing new models in streaming app.
• Handling offline devices could be challenging.
• Featuredetection
Key Takeaways
• Extended Reality needs streaming.
• Transfer learning between environments.
• Using Avro map with Schema Registry is powerful.
• Everything is an event except state.
• Node based deployments in Kubernetes for robustcluster.
• VR data is biometric, so ask for Consent.
• STOMP compatibility with Kafka
(Simple TextOrientated Messaging Protocol)
XR Insights Demo
Thank You
accenture.com/thedock
Navdeep Sharma | Data & AI Engineer
navdeep.a.sharma@accenture.com
/showcase/accenture-the-dock @AccentureDock
Ad

More Related Content

What's hot (20)

ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!
Guido Schmutz
 
Streams, Tables, and Time in KSQL
Streams, Tables, and Time in KSQLStreams, Tables, and Time in KSQL
Streams, Tables, and Time in KSQL
confluent
 
Apache Beam: A unified model for batch and stream processing data
Apache Beam: A unified model for batch and stream processing dataApache Beam: A unified model for batch and stream processing data
Apache Beam: A unified model for batch and stream processing data
DataWorks Summit/Hadoop Summit
 
Kafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingKafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processing
Yaroslav Tkachenko
 
KSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for KafkaKSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for Kafka
confluent
 
Developing a Real-time Engine with Akka, Cassandra, and Spray
Developing a Real-time Engine with Akka, Cassandra, and SprayDeveloping a Real-time Engine with Akka, Cassandra, and Spray
Developing a Real-time Engine with Akka, Cassandra, and Spray
Jacob Park
 
Big Data LDN 2017: The Streaming Transformation
Big Data LDN 2017: The Streaming TransformationBig Data LDN 2017: The Streaming Transformation
Big Data LDN 2017: The Streaming Transformation
Matt Stubbs
 
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Anton Kirillov
 
Robust Operations of Kafka Streams
Robust Operations of Kafka StreamsRobust Operations of Kafka Streams
Robust Operations of Kafka Streams
confluent
 
Lambda Architecture Using SQL
Lambda Architecture Using SQLLambda Architecture Using SQL
Lambda Architecture Using SQL
SATOSHI TAGOMORI
 
Using Spark, Kafka, Cassandra and Akka on Mesos for Real-Time Personalization
Using Spark, Kafka, Cassandra and Akka on Mesos for Real-Time PersonalizationUsing Spark, Kafka, Cassandra and Akka on Mesos for Real-Time Personalization
Using Spark, Kafka, Cassandra and Akka on Mesos for Real-Time Personalization
Patrick Di Loreto
 
Apache Kafka® 102 - Applied
Apache Kafka® 102 -  AppliedApache Kafka® 102 -  Applied
Apache Kafka® 102 - Applied
confluent
 
From stream to recommendation using apache beam with cloud pubsub and cloud d...
From stream to recommendation using apache beam with cloud pubsub and cloud d...From stream to recommendation using apache beam with cloud pubsub and cloud d...
From stream to recommendation using apache beam with cloud pubsub and cloud d...
Neville Li
 
Riddles of Streaming - Code Puzzlers for Fun & Profit (Nick Dearden, Confluen...
Riddles of Streaming - Code Puzzlers for Fun & Profit (Nick Dearden, Confluen...Riddles of Streaming - Code Puzzlers for Fun & Profit (Nick Dearden, Confluen...
Riddles of Streaming - Code Puzzlers for Fun & Profit (Nick Dearden, Confluen...
confluent
 
A Practical Approach to Building a Streaming Processing Pipeline for an Onlin...
A Practical Approach to Building a Streaming Processing Pipeline for an Onlin...A Practical Approach to Building a Streaming Processing Pipeline for an Onlin...
A Practical Approach to Building a Streaming Processing Pipeline for an Onlin...
Databricks
 
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
confluent
 
Real-Time Anomaly Detection with Spark MLlib, Akka and Cassandra
Real-Time Anomaly Detection  with Spark MLlib, Akka and  CassandraReal-Time Anomaly Detection  with Spark MLlib, Akka and  Cassandra
Real-Time Anomaly Detection with Spark MLlib, Akka and Cassandra
Natalino Busa
 
Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...
Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...
Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...
Yaroslav Tkachenko
 
Building a fully-automated Fast Data Platform
Building a fully-automated Fast Data PlatformBuilding a fully-automated Fast Data Platform
Building a fully-automated Fast Data Platform
Manuel Sehlinger
 
Richmond kafka streams intro
Richmond kafka streams introRichmond kafka streams intro
Richmond kafka streams intro
confluent
 
ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!ksqlDB - Stream Processing simplified!
ksqlDB - Stream Processing simplified!
Guido Schmutz
 
Streams, Tables, and Time in KSQL
Streams, Tables, and Time in KSQLStreams, Tables, and Time in KSQL
Streams, Tables, and Time in KSQL
confluent
 
Apache Beam: A unified model for batch and stream processing data
Apache Beam: A unified model for batch and stream processing dataApache Beam: A unified model for batch and stream processing data
Apache Beam: A unified model for batch and stream processing data
DataWorks Summit/Hadoop Summit
 
Kafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingKafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processing
Yaroslav Tkachenko
 
KSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for KafkaKSQL: Streaming SQL for Kafka
KSQL: Streaming SQL for Kafka
confluent
 
Developing a Real-time Engine with Akka, Cassandra, and Spray
Developing a Real-time Engine with Akka, Cassandra, and SprayDeveloping a Real-time Engine with Akka, Cassandra, and Spray
Developing a Real-time Engine with Akka, Cassandra, and Spray
Jacob Park
 
Big Data LDN 2017: The Streaming Transformation
Big Data LDN 2017: The Streaming TransformationBig Data LDN 2017: The Streaming Transformation
Big Data LDN 2017: The Streaming Transformation
Matt Stubbs
 
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Data processing platforms architectures with Spark, Mesos, Akka, Cassandra an...
Anton Kirillov
 
Robust Operations of Kafka Streams
Robust Operations of Kafka StreamsRobust Operations of Kafka Streams
Robust Operations of Kafka Streams
confluent
 
Lambda Architecture Using SQL
Lambda Architecture Using SQLLambda Architecture Using SQL
Lambda Architecture Using SQL
SATOSHI TAGOMORI
 
Using Spark, Kafka, Cassandra and Akka on Mesos for Real-Time Personalization
Using Spark, Kafka, Cassandra and Akka on Mesos for Real-Time PersonalizationUsing Spark, Kafka, Cassandra and Akka on Mesos for Real-Time Personalization
Using Spark, Kafka, Cassandra and Akka on Mesos for Real-Time Personalization
Patrick Di Loreto
 
Apache Kafka® 102 - Applied
Apache Kafka® 102 -  AppliedApache Kafka® 102 -  Applied
Apache Kafka® 102 - Applied
confluent
 
From stream to recommendation using apache beam with cloud pubsub and cloud d...
From stream to recommendation using apache beam with cloud pubsub and cloud d...From stream to recommendation using apache beam with cloud pubsub and cloud d...
From stream to recommendation using apache beam with cloud pubsub and cloud d...
Neville Li
 
Riddles of Streaming - Code Puzzlers for Fun & Profit (Nick Dearden, Confluen...
Riddles of Streaming - Code Puzzlers for Fun & Profit (Nick Dearden, Confluen...Riddles of Streaming - Code Puzzlers for Fun & Profit (Nick Dearden, Confluen...
Riddles of Streaming - Code Puzzlers for Fun & Profit (Nick Dearden, Confluen...
confluent
 
A Practical Approach to Building a Streaming Processing Pipeline for an Onlin...
A Practical Approach to Building a Streaming Processing Pipeline for an Onlin...A Practical Approach to Building a Streaming Processing Pipeline for an Onlin...
A Practical Approach to Building a Streaming Processing Pipeline for an Onlin...
Databricks
 
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
Apache Kafka and KSQL in Action: Let's Build a Streaming Data Pipeline!
confluent
 
Real-Time Anomaly Detection with Spark MLlib, Akka and Cassandra
Real-Time Anomaly Detection  with Spark MLlib, Akka and  CassandraReal-Time Anomaly Detection  with Spark MLlib, Akka and  Cassandra
Real-Time Anomaly Detection with Spark MLlib, Akka and Cassandra
Natalino Busa
 
Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...
Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...
Building Scalable and Extendable Data Pipeline for Call of Duty Games: Lesson...
Yaroslav Tkachenko
 
Building a fully-automated Fast Data Platform
Building a fully-automated Fast Data PlatformBuilding a fully-automated Fast Data Platform
Building a fully-automated Fast Data Platform
Manuel Sehlinger
 
Richmond kafka streams intro
Richmond kafka streams introRichmond kafka streams intro
Richmond kafka streams intro
confluent
 

Similar to Closing the Loop in Extended Reality with Kafka Streams and Machine Learning (Rob Drysdale and Sarah Healy, Accenture) Kafka Summit London 2019 (20)

d3sparql.js demo at SWAT4LS 2014 in Berlin
d3sparql.js demo at SWAT4LS 2014 in Berlind3sparql.js demo at SWAT4LS 2014 in Berlin
d3sparql.js demo at SWAT4LS 2014 in Berlin
Toshiaki Katayama
 
Montreal Elasticsearch Meetup
Montreal Elasticsearch MeetupMontreal Elasticsearch Meetup
Montreal Elasticsearch Meetup
Loïc Bertron
 
ELK - What's new and showcases
ELK - What's new and showcasesELK - What's new and showcases
ELK - What's new and showcases
Andrii Gakhov
 
Sherlock: an anomaly detection service on top of Druid
Sherlock: an anomaly detection service on top of Druid Sherlock: an anomaly detection service on top of Druid
Sherlock: an anomaly detection service on top of Druid
DataWorks Summit
 
Spark schema for free with David Szakallas
Spark schema for free with David SzakallasSpark schema for free with David Szakallas
Spark schema for free with David Szakallas
Databricks
 
ETL with SPARK - First Spark London meetup
ETL with SPARK - First Spark London meetupETL with SPARK - First Spark London meetup
ETL with SPARK - First Spark London meetup
Rafal Kwasny
 
Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Couchbase Tutorial: Big data Open Source Systems: VLDB2018Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Keshav Murthy
 
Semi Formal Model for Document Oriented Databases
Semi Formal Model for Document Oriented DatabasesSemi Formal Model for Document Oriented Databases
Semi Formal Model for Document Oriented Databases
Daniel Coupal
 
Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!
Philips Kokoh Prasetyo
 
ELK Stack - Turn boring logfiles into sexy dashboard
ELK Stack - Turn boring logfiles into sexy dashboardELK Stack - Turn boring logfiles into sexy dashboard
ELK Stack - Turn boring logfiles into sexy dashboard
Georg Sorst
 
A Century Of Weather Data - Midwest.io
A Century Of Weather Data - Midwest.ioA Century Of Weather Data - Midwest.io
A Century Of Weather Data - Midwest.io
Randall Hunt
 
Azure DocumentDB: Advanced Features for Large Scale-Apps
Azure DocumentDB: Advanced Features for Large Scale-AppsAzure DocumentDB: Advanced Features for Large Scale-Apps
Azure DocumentDB: Advanced Features for Large Scale-Apps
Andrew Liu
 
Applied Machine learning using H2O, python and R Workshop
Applied Machine learning using H2O, python and R WorkshopApplied Machine learning using H2O, python and R Workshop
Applied Machine learning using H2O, python and R Workshop
Avkash Chauhan
 
elasticsearch - advanced features in practice
elasticsearch - advanced features in practiceelasticsearch - advanced features in practice
elasticsearch - advanced features in practice
Jano Suchal
 
Parallel SQL and Analytics with Solr: Presented by Yonik Seeley, Cloudera
Parallel SQL and Analytics with Solr: Presented by Yonik Seeley, ClouderaParallel SQL and Analytics with Solr: Presented by Yonik Seeley, Cloudera
Parallel SQL and Analytics with Solr: Presented by Yonik Seeley, Cloudera
Lucidworks
 
Towards Interoperability between W3C Web of Things and NGSI-LD
Towards Interoperability between W3C Web of Things and NGSI-LDTowards Interoperability between W3C Web of Things and NGSI-LD
Towards Interoperability between W3C Web of Things and NGSI-LD
José Manuel Cantera Fonseca
 
Crafting Evolvable Api Responses
Crafting Evolvable Api ResponsesCrafting Evolvable Api Responses
Crafting Evolvable Api Responses
darrelmiller71
 
Streaming Operational Data with MariaDB MaxScale
Streaming Operational Data with MariaDB MaxScaleStreaming Operational Data with MariaDB MaxScale
Streaming Operational Data with MariaDB MaxScale
MariaDB plc
 
Real-Time Analytics with Solr: Presented by Yonik Seeley, Cloudera
Real-Time Analytics with Solr: Presented by Yonik Seeley, ClouderaReal-Time Analytics with Solr: Presented by Yonik Seeley, Cloudera
Real-Time Analytics with Solr: Presented by Yonik Seeley, Cloudera
Lucidworks
 
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael HausenblasBerlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas
MapR Technologies
 
d3sparql.js demo at SWAT4LS 2014 in Berlin
d3sparql.js demo at SWAT4LS 2014 in Berlind3sparql.js demo at SWAT4LS 2014 in Berlin
d3sparql.js demo at SWAT4LS 2014 in Berlin
Toshiaki Katayama
 
Montreal Elasticsearch Meetup
Montreal Elasticsearch MeetupMontreal Elasticsearch Meetup
Montreal Elasticsearch Meetup
Loïc Bertron
 
ELK - What's new and showcases
ELK - What's new and showcasesELK - What's new and showcases
ELK - What's new and showcases
Andrii Gakhov
 
Sherlock: an anomaly detection service on top of Druid
Sherlock: an anomaly detection service on top of Druid Sherlock: an anomaly detection service on top of Druid
Sherlock: an anomaly detection service on top of Druid
DataWorks Summit
 
Spark schema for free with David Szakallas
Spark schema for free with David SzakallasSpark schema for free with David Szakallas
Spark schema for free with David Szakallas
Databricks
 
ETL with SPARK - First Spark London meetup
ETL with SPARK - First Spark London meetupETL with SPARK - First Spark London meetup
ETL with SPARK - First Spark London meetup
Rafal Kwasny
 
Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Couchbase Tutorial: Big data Open Source Systems: VLDB2018Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Couchbase Tutorial: Big data Open Source Systems: VLDB2018
Keshav Murthy
 
Semi Formal Model for Document Oriented Databases
Semi Formal Model for Document Oriented DatabasesSemi Formal Model for Document Oriented Databases
Semi Formal Model for Document Oriented Databases
Daniel Coupal
 
Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!
Philips Kokoh Prasetyo
 
ELK Stack - Turn boring logfiles into sexy dashboard
ELK Stack - Turn boring logfiles into sexy dashboardELK Stack - Turn boring logfiles into sexy dashboard
ELK Stack - Turn boring logfiles into sexy dashboard
Georg Sorst
 
A Century Of Weather Data - Midwest.io
A Century Of Weather Data - Midwest.ioA Century Of Weather Data - Midwest.io
A Century Of Weather Data - Midwest.io
Randall Hunt
 
Azure DocumentDB: Advanced Features for Large Scale-Apps
Azure DocumentDB: Advanced Features for Large Scale-AppsAzure DocumentDB: Advanced Features for Large Scale-Apps
Azure DocumentDB: Advanced Features for Large Scale-Apps
Andrew Liu
 
Applied Machine learning using H2O, python and R Workshop
Applied Machine learning using H2O, python and R WorkshopApplied Machine learning using H2O, python and R Workshop
Applied Machine learning using H2O, python and R Workshop
Avkash Chauhan
 
elasticsearch - advanced features in practice
elasticsearch - advanced features in practiceelasticsearch - advanced features in practice
elasticsearch - advanced features in practice
Jano Suchal
 
Parallel SQL and Analytics with Solr: Presented by Yonik Seeley, Cloudera
Parallel SQL and Analytics with Solr: Presented by Yonik Seeley, ClouderaParallel SQL and Analytics with Solr: Presented by Yonik Seeley, Cloudera
Parallel SQL and Analytics with Solr: Presented by Yonik Seeley, Cloudera
Lucidworks
 
Towards Interoperability between W3C Web of Things and NGSI-LD
Towards Interoperability between W3C Web of Things and NGSI-LDTowards Interoperability between W3C Web of Things and NGSI-LD
Towards Interoperability between W3C Web of Things and NGSI-LD
José Manuel Cantera Fonseca
 
Crafting Evolvable Api Responses
Crafting Evolvable Api ResponsesCrafting Evolvable Api Responses
Crafting Evolvable Api Responses
darrelmiller71
 
Streaming Operational Data with MariaDB MaxScale
Streaming Operational Data with MariaDB MaxScaleStreaming Operational Data with MariaDB MaxScale
Streaming Operational Data with MariaDB MaxScale
MariaDB plc
 
Real-Time Analytics with Solr: Presented by Yonik Seeley, Cloudera
Real-Time Analytics with Solr: Presented by Yonik Seeley, ClouderaReal-Time Analytics with Solr: Presented by Yonik Seeley, Cloudera
Real-Time Analytics with Solr: Presented by Yonik Seeley, Cloudera
Lucidworks
 
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael HausenblasBerlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas
Berlin Buzz Words - Apache Drill by Ted Dunning & Michael Hausenblas
MapR Technologies
 
Ad

More from confluent (20)

Webinar Think Right - Shift Left - 19-03-2025.pptx
Webinar Think Right - Shift Left - 19-03-2025.pptxWebinar Think Right - Shift Left - 19-03-2025.pptx
Webinar Think Right - Shift Left - 19-03-2025.pptx
confluent
 
Migration, backup and restore made easy using Kannika
Migration, backup and restore made easy using KannikaMigration, backup and restore made easy using Kannika
Migration, backup and restore made easy using Kannika
confluent
 
Five Things You Need to Know About Data Streaming in 2025
Five Things You Need to Know About Data Streaming in 2025Five Things You Need to Know About Data Streaming in 2025
Five Things You Need to Know About Data Streaming in 2025
confluent
 
Data in Motion Tour Seoul 2024 - Keynote
Data in Motion Tour Seoul 2024 - KeynoteData in Motion Tour Seoul 2024 - Keynote
Data in Motion Tour Seoul 2024 - Keynote
confluent
 
Data in Motion Tour Seoul 2024 - Roadmap Demo
Data in Motion Tour Seoul 2024  - Roadmap DemoData in Motion Tour Seoul 2024  - Roadmap Demo
Data in Motion Tour Seoul 2024 - Roadmap Demo
confluent
 
From Stream to Screen: Real-Time Data Streaming to Web Frontends with Conflue...
From Stream to Screen: Real-Time Data Streaming to Web Frontends with Conflue...From Stream to Screen: Real-Time Data Streaming to Web Frontends with Conflue...
From Stream to Screen: Real-Time Data Streaming to Web Frontends with Conflue...
confluent
 
Confluent per il settore FSI: Accelerare l'Innovazione con il Data Streaming...
Confluent per il settore FSI:  Accelerare l'Innovazione con il Data Streaming...Confluent per il settore FSI:  Accelerare l'Innovazione con il Data Streaming...
Confluent per il settore FSI: Accelerare l'Innovazione con il Data Streaming...
confluent
 
Data in Motion Tour 2024 Riyadh, Saudi Arabia
Data in Motion Tour 2024 Riyadh, Saudi ArabiaData in Motion Tour 2024 Riyadh, Saudi Arabia
Data in Motion Tour 2024 Riyadh, Saudi Arabia
confluent
 
Build a Real-Time Decision Support Application for Financial Market Traders w...
Build a Real-Time Decision Support Application for Financial Market Traders w...Build a Real-Time Decision Support Application for Financial Market Traders w...
Build a Real-Time Decision Support Application for Financial Market Traders w...
confluent
 
Strumenti e Strategie di Stream Governance con Confluent Platform
Strumenti e Strategie di Stream Governance con Confluent PlatformStrumenti e Strategie di Stream Governance con Confluent Platform
Strumenti e Strategie di Stream Governance con Confluent Platform
confluent
 
Compose Gen-AI Apps With Real-Time Data - In Minutes, Not Weeks
Compose Gen-AI Apps With Real-Time Data - In Minutes, Not WeeksCompose Gen-AI Apps With Real-Time Data - In Minutes, Not Weeks
Compose Gen-AI Apps With Real-Time Data - In Minutes, Not Weeks
confluent
 
Building Real-Time Gen AI Applications with SingleStore and Confluent
Building Real-Time Gen AI Applications with SingleStore and ConfluentBuilding Real-Time Gen AI Applications with SingleStore and Confluent
Building Real-Time Gen AI Applications with SingleStore and Confluent
confluent
 
Unlocking value with event-driven architecture by Confluent
Unlocking value with event-driven architecture by ConfluentUnlocking value with event-driven architecture by Confluent
Unlocking value with event-driven architecture by Confluent
confluent
 
Il Data Streaming per un’AI real-time di nuova generazione
Il Data Streaming per un’AI real-time di nuova generazioneIl Data Streaming per un’AI real-time di nuova generazione
Il Data Streaming per un’AI real-time di nuova generazione
confluent
 
Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...
Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...
Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...
confluent
 
Break data silos with real-time connectivity using Confluent Cloud Connectors
Break data silos with real-time connectivity using Confluent Cloud ConnectorsBreak data silos with real-time connectivity using Confluent Cloud Connectors
Break data silos with real-time connectivity using Confluent Cloud Connectors
confluent
 
Building API data products on top of your real-time data infrastructure
Building API data products on top of your real-time data infrastructureBuilding API data products on top of your real-time data infrastructure
Building API data products on top of your real-time data infrastructure
confluent
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
confluent
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
confluent
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
confluent
 
Webinar Think Right - Shift Left - 19-03-2025.pptx
Webinar Think Right - Shift Left - 19-03-2025.pptxWebinar Think Right - Shift Left - 19-03-2025.pptx
Webinar Think Right - Shift Left - 19-03-2025.pptx
confluent
 
Migration, backup and restore made easy using Kannika
Migration, backup and restore made easy using KannikaMigration, backup and restore made easy using Kannika
Migration, backup and restore made easy using Kannika
confluent
 
Five Things You Need to Know About Data Streaming in 2025
Five Things You Need to Know About Data Streaming in 2025Five Things You Need to Know About Data Streaming in 2025
Five Things You Need to Know About Data Streaming in 2025
confluent
 
Data in Motion Tour Seoul 2024 - Keynote
Data in Motion Tour Seoul 2024 - KeynoteData in Motion Tour Seoul 2024 - Keynote
Data in Motion Tour Seoul 2024 - Keynote
confluent
 
Data in Motion Tour Seoul 2024 - Roadmap Demo
Data in Motion Tour Seoul 2024  - Roadmap DemoData in Motion Tour Seoul 2024  - Roadmap Demo
Data in Motion Tour Seoul 2024 - Roadmap Demo
confluent
 
From Stream to Screen: Real-Time Data Streaming to Web Frontends with Conflue...
From Stream to Screen: Real-Time Data Streaming to Web Frontends with Conflue...From Stream to Screen: Real-Time Data Streaming to Web Frontends with Conflue...
From Stream to Screen: Real-Time Data Streaming to Web Frontends with Conflue...
confluent
 
Confluent per il settore FSI: Accelerare l'Innovazione con il Data Streaming...
Confluent per il settore FSI:  Accelerare l'Innovazione con il Data Streaming...Confluent per il settore FSI:  Accelerare l'Innovazione con il Data Streaming...
Confluent per il settore FSI: Accelerare l'Innovazione con il Data Streaming...
confluent
 
Data in Motion Tour 2024 Riyadh, Saudi Arabia
Data in Motion Tour 2024 Riyadh, Saudi ArabiaData in Motion Tour 2024 Riyadh, Saudi Arabia
Data in Motion Tour 2024 Riyadh, Saudi Arabia
confluent
 
Build a Real-Time Decision Support Application for Financial Market Traders w...
Build a Real-Time Decision Support Application for Financial Market Traders w...Build a Real-Time Decision Support Application for Financial Market Traders w...
Build a Real-Time Decision Support Application for Financial Market Traders w...
confluent
 
Strumenti e Strategie di Stream Governance con Confluent Platform
Strumenti e Strategie di Stream Governance con Confluent PlatformStrumenti e Strategie di Stream Governance con Confluent Platform
Strumenti e Strategie di Stream Governance con Confluent Platform
confluent
 
Compose Gen-AI Apps With Real-Time Data - In Minutes, Not Weeks
Compose Gen-AI Apps With Real-Time Data - In Minutes, Not WeeksCompose Gen-AI Apps With Real-Time Data - In Minutes, Not Weeks
Compose Gen-AI Apps With Real-Time Data - In Minutes, Not Weeks
confluent
 
Building Real-Time Gen AI Applications with SingleStore and Confluent
Building Real-Time Gen AI Applications with SingleStore and ConfluentBuilding Real-Time Gen AI Applications with SingleStore and Confluent
Building Real-Time Gen AI Applications with SingleStore and Confluent
confluent
 
Unlocking value with event-driven architecture by Confluent
Unlocking value with event-driven architecture by ConfluentUnlocking value with event-driven architecture by Confluent
Unlocking value with event-driven architecture by Confluent
confluent
 
Il Data Streaming per un’AI real-time di nuova generazione
Il Data Streaming per un’AI real-time di nuova generazioneIl Data Streaming per un’AI real-time di nuova generazione
Il Data Streaming per un’AI real-time di nuova generazione
confluent
 
Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...
Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...
Unleashing the Future: Building a Scalable and Up-to-Date GenAI Chatbot with ...
confluent
 
Break data silos with real-time connectivity using Confluent Cloud Connectors
Break data silos with real-time connectivity using Confluent Cloud ConnectorsBreak data silos with real-time connectivity using Confluent Cloud Connectors
Break data silos with real-time connectivity using Confluent Cloud Connectors
confluent
 
Building API data products on top of your real-time data infrastructure
Building API data products on top of your real-time data infrastructureBuilding API data products on top of your real-time data infrastructure
Building API data products on top of your real-time data infrastructure
confluent
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
confluent
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
confluent
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
confluent
 
Ad

Recently uploaded (20)

IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 

Closing the Loop in Extended Reality with Kafka Streams and Machine Learning (Rob Drysdale and Sarah Healy, Accenture) Kafka Summit London 2019

  • 1. Closing the Loop in Extended Reality with Kafka Streams and Machine Learning Rob Drysdale | Senior Principal | [email protected] Sarah Healy | Software Engineer | [email protected]
  • 2. The Dock is Accenture’s flagship R&D and Global Innovation Centre 300+ multi-disciplinary team 42% female 35+ nationalities 142 patents filed Based in Silicon Docks, Dublin. A hub for many global tech companies
  • 3. • Extended reality in mainstream • XR Insights : Usecase • Building Generic Streaming Platform: Architectureand Schema • Deep dive into our implementation • Machine Learning 101 : Finding Patterns • Learnings & Takeaways • Demo Agenda
  • 4. XR Industry • Exponential Growth • Industry Adoption: • Healthcare • Aviation • Education & Training • Retail & Advertising • Training: VR • Safer Healthcare • Cheaper • Monitorable • On-the-job: AR • Future Worker • Hands-free Manuals • Remote Guidance • Automated Guidance • Prediction/Prevention
  • 5. A Streaming platform with capability to plug & play VR/AR devices and ML models. XR Insights Data Stream Capture: • State Stream • Event Stream Data Analyses: • Data-Driven User Assessment: o Improving Accuracy of Assessment o Removing Subjectivity of Assessment • Insights on Performance and behaviour • Personalise Training • Improve Work/Training Process • Predict/Guide User behaviour
  • 6. TrainingData WebSocket Server (STOMP) /topic/feedback XR Insights /app/state /app/event Kafka Producer Kafka Consumer Kafka Stream Data Transformations Kafka Connect Master DB BuildingML Model Model & Features S3 Bucket Production ML Model Personalization Real Time Reporting XR Devices
  • 7. • Speed of Data Transmation • Consumer Groups • Easy Embedding of Kafka clients in existing servicedeployments • Avro Schema support • Clients for Java & Python • Eventdriven & supportto query on real-time data Why Kafka Streams?
  • 9. • Kubernetes 1.13 & Docker (Statefulsets) • Spring boot with WebSocket + STOMP • Unity & C# • Kafka 2.1.0, Kafka Streams DSL • Schema Registry, Avro, ConnectCluster • Couchbase, Grafana, Elastic search Technologies
  • 10. { "type": "record", "namespace": "com.accenture", "name": "Event", "version": "1", "fields": [ { "name": "eventId", "type": "string", "doc": "Unique Id per record" }, { "name": "sessionId", "type":"string", "doc": "session Id per record" }, { "name": "timestamp", "type": "float", "doc": "Timestamp of Event" }, { "name": "type", "type": "string", "doc" : "Type of Event" }, { "name": "name", "type": "string", "doc": "Name of Event" }, { "name": "desc", "type": {"type": "map", "values": "string"} , "doc": "description of event"} ] } { "topic":"event-topic", "key":"d433b1db-4f89-4128-896f-95ac204b8681", "value":{ "eventId":"d433b1db-4f89-4128-896f-95ac204b8681", "sessionId":"13937ec1-82e1-4071-a6e7-31d31674de25", "timestamp":148.45999, "type":"Error", "name":"Drop", "desc":{ "collided":"Floor", "Task id":"0", "point of contact":"(1.1 1.0 -1.1)", "lhand":"NA", "collider":"spray_bottle", "rhand":"NA" } }, "partition":2, "offset":10 } Event Schema: Example
  • 11. { "type": "record", "namespace": "com.accenture", "name": "State", "version": "1", "fields": [ { "name": "stateId", "type":["null", "string"], doc:”NA” }, { "name": "sessionId", "type":["null", "string"], "doc": ”NA" }, { "name": "timestamp", "type": "double", "doc": ”NA" }, { "name": "task", "type": "long", "doc": ”NA" }, { "name": "subtask", "type":["null", "string"], "doc": ”NA" }, { "name": "lx", "type": "double", "doc": "NA" }, { "name": "ly", "type": "double", "doc": "NA" }, { "name": "lz", "type": "double", "doc": "NA" }, { "name": "rx", "type": "double", "doc": "NA" }, { "name": "ry", "type": "double", "doc": "NA" }, { "name": "rz", "type": "double", "doc": "NA" }, { "name": "hx", "type": "double", "doc": "NA" }, { "name": "hy", "type": "double", "doc": "NA" }, { "name": "hz", "type": "double", "doc": "NA" }, { "name": "rItemHeld", "type":["null", "string"], "doc": "NA"} { "name": "lItemHeld", "type":["null", "string"], "doc": "NA"}, { "name": "ltrigger", "type":["null", "boolean"], "doc": "NA"}, { "name": "rtrigger", "type":["null", "boolean"], "doc": "NA"} ] } { "topic":"state-topic", "key":"13937ec1-82e1-4071-a6e7-31d31674de25", "value":{ "stateId":{ "string":"cdfc5d94-3f1e-404a-ba27-632b3616dbfd" }, "sessionId":{ "string":"13937ec1-82e1-4071-a6e7-31d31674de25" }, "timestamp":126.98802185058594, "task":0, "subtask":{ "string":"0" }, "lx":0.6099972724914551, "ly":2.122999906539917, "lz":-0.22100147604942322, "rx":0.9099972248077393, "ry":2.122999906539917, "rz":-0.22099855542182922, "hx":0.8208140134811401, "hy":2.4463324546813965, "hz":0.6848392486572266, "rItemHeld":null "lItemHeld":null, "partition":2, "offset":15 } } State Schema: Example
  • 12. 1. Maven Plugin to generate Java Classes for Avro Schema: org.apache.avro.avro-maven-plugin 2. Parse STOMP messages as Generic Avro Record. Inspired by stackoverflow answer from @lucapette here eventSchemaPath = IOUtils.toString(classLoader.getResourceAsStream("event.avsc")); Schema eventSchemaParser =parser.parse(eventSchemaPath); @MessageMapping("/event") public void pushEvents(Eventevent){ String key=event.getSessionId(); GenericRecord eventAvroRecord=mapObjectToRecord(event, eventSchemaParser); ProducerRecord<Object,Object>record =new ProducerRecord<>(config.getEventTopicName(), event.getSessionId(), eventAvroRecord); } public GenericData.Record mapObjectToRecord(Objectobject,Schema schema) { final GenericData.Record record =new GenericData.Record(schema); schema.getFields().forEach(r->record.put(r.name(),PropertyAccessorFactory.forDirectFieldAccess(object).getPropertyValue(r.name()))); return record; } KAFKA Producer: Generic Avro Record
  • 13. Using GlobalKTable to maintain user's active status String[] state = {"GameStart","GameEnd"}; valueGenericAvroSerde.configure(serdeConfig, false); // `false` for record values StreamsBuilder builder = new StreamsBuilder(); builder.stream("event-topic", Consumed.with(keySerde,valueGenericAvroSerde)) .map((key,value) -> KeyValue.pair(value.get("sessionId").toString(),value.get("name").toString())) .filter((key,value) -> Arrays.stream(state).anyMatch(value::equalsIgnoreCase)) .to("user-status"); GlobalKTable<String, String> userStatusTable=builder.globalTable("user-status",Consumed.with(Serdes.String(), Serdes.String()),Materialized.as(”active-user-status")); final KafkaStreams streams = new KafkaStreams(builder.build(), streamsConfiguration); streams.cleanUp(); streams.start(); Active User Status: GlobalKTable
  • 14. ML 101: Finding Patterns Mining Association Rules Based on Apriori Algorithm Problems • One hot Encoding Numeric Data • Updating the model needs to update the application. • Computational Complexity Problem. Prediction Pattern: • Understanding Past User Behavior • Personalization of current User
  • 15. Events: • No. of Frames • No. of Tasks • Grip Right • Grip Left • Trigger Right • Trigger Left • Both Right • Both Left • Only Uses One Hand • No. of Drops • No. of Incorrect Objects Picked Up • No. of times looking at trainer Derived Events: • No. of times not looking at object of interest • Hands moving towards/away from object of interest: • This is not an once-off event, but runs over time through the task. • Hands jittering • Picking up the wrong item • Touching the wrong item • Dropping an object • Hitting an object (including surfaces or hood) • Facing away from Objects of interest • Task Start/End
  • 16. For creating association rules, algorithm needs a boolean matrix as a parameter. Because of this user / event count data should be converted a boolean matrix. Data Encoding Challenge PossibleApproaches • Thresholding • Ranging • Bucketing • Smart Bucketing Colour Red Yellow Green Red Red Yellow Yellow Green 1 0 0 1 0 0 0 1 0 0 0 1
  • 17. Predicting Responses: eventStream.join(activeUserGlobalKTable, (session, event) -> event.getSessionId(), (event, userStatus) -> model.predict(event, userStatus)) .filter((key , response) -> response.getMessageText()!=null) .to("response-topic"); { "type": "record", "namespace": "com.accenture", "name": "Response", "version": "1", "fields": [ { "name": "responseId", "type": "string", "doc": "Unique Id per record" }, { "name": "sessionId", "type": "string", "doc": "session Id per record" }, { "name": "action", "type": "string", "doc": "NA" }, { "name": "severity", "type": "int", "doc" : "NA" }, { "name": "messageText", "type": "string", "doc": "NA" }, { "name": "messageType", "type": "string", "doc": "predefined message types"}, { "name": "messageObject", "type": "string" , "doc": "description of event"} ] } Response Schema
  • 18. Low Latency Predictions: Kafka Producers in Python oarp = OnlineAssociationRulePrediction() try: oarp.initialize_model(application_id, Config.S3_ADDRESS,Config.S3_KEY,Config.S3_SECRET) except: print("no model") execute = False while (execute): event_msg = event_consumer.poll(600000) state_msg = state_consumer.poll(600000) eventRecord = decode_message(event_msg, event_schema) stateRecord = decode_message(state_msg, state_schema) append_windowed_df(state_msg) analytics_response= oarp.predict(state_data=state_df, event_data=event_df) # Return responseto Unity key = {"name": eventRecord["sessionId"]} for responseinanalytics_response: value = {"responseId": str(uuid.uuid4()), "sessionId": eventRecord["sessionId"], "action": response["action"],"severity": response["severity"], "messageText": response["messageText"], "messageObject": response["messageObject"], "messageType": response["messageType"] } avro_producer.produce(topic=Config.RESPONSE_TOPIC, value=value, key=key)
  • 19. public void run(String... strings) { final Properties streamsConfiguration =newProperties(); streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,Serdes.String().getClass()); streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, GenericAvroSerde.class); KStream<String, GenericRecord>responseStream =builder.stream(“response-topic”, Consumed.with(keySerde,valueGenericAvroSerde)); responseStream.foreach((key,value)->publishToVR(key,value.toString())); final KafkaStreams streams =newKafkaStreams(builder.build(), streamsConfiguration); streams.start(); Runtime.getRuntime().addShutdownHook(new Thread(streams::close)); } public void publishToVR(String sessionId,String message) { brokerMessagingTemplate.convertAndSendToUser(sessionId,"/topics/feedback",JSON.toJSON(message)); } Stream Response: Generic Avro Record
  • 20. Challenges and Learnings • Handling Multi-tenancy in streaming • Pushing new models in streaming app. • Handling offline devices could be challenging. • Featuredetection
  • 21. Key Takeaways • Extended Reality needs streaming. • Transfer learning between environments. • Using Avro map with Schema Registry is powerful. • Everything is an event except state. • Node based deployments in Kubernetes for robustcluster. • VR data is biometric, so ask for Consent. • STOMP compatibility with Kafka (Simple TextOrientated Messaging Protocol)
  • 23. Thank You accenture.com/thedock Navdeep Sharma | Data & AI Engineer [email protected] /showcase/accenture-the-dock @AccentureDock