SlideShare ist ein Scribd-Unternehmen logo
CLICKSTREAM ANALYSIS WITH
SPARK – UNDERSTANDING
VISITORS IN REAL-TIME
Dr. Josef Adersberger
QAware GmbH, Germany
THE CHALLENGE
One Kettle to Rule ‘em All
Web Tracking Ad Tracking
ERP CRM
One Kettle to Rule ‘em All
Retention Reach
Monetarization
steer …
 Campaigns
 Offers
 Contents
Clickstream Analysis with Spark
THE CONCEPTS
by Randy Paulino
The First Sketch
(= real-time)
Tableau
User Journey Analysis
C V VT VT VT C X
C V
V V V V V V V
C V V C V V V
VT VT V V V VT C
V X
Event stream: User journeys:
Web / Ad tracking
KPIs:
 Unique users
 Conversions
 Ad costs / conversion value
 …
V
X
VT
C Click
View
View Time
Conversion
THE ARCHITECTURE
„Larry & Friends“ Architecture
Collector Aggregation
SQL DB
Runs not well for more
than 1 TB data in terms of
ingestion speed, query time
and optimization efforts
by adweek.com
Nope.
Sorry, no Big Data.
„Hadoop & Friends“ Architecture
Collector
Batch Processor
[Hadoop]
Collector Event Data Lake Batch Processor Analytics DB
JSON
Stream
Aggregation
takes too long
Cumbersome
programming model
(can be solved with
pig, cascading et al.)
Not
interactive
enough
Nope.
Too sluggish.
κ-Architecture
Collector Stream Processor
Analytics DB
Persistence
JSON
Stream
Cumbersome
programming model
Over-engineered: We only need
15min real-time ;-)
Stateful aggregations (unique x,
conversions) require a separate DB
with high throughput and fast
aggregations & lookups.
λ-Architecture
Collector
Event Processor
Event Data Lake Batch Processor
Analytics DB
Speed Layer
Batch Layer
JSON
Stream
Cumbersome
programming model
Complex
architecture
Redundant
logic
Feels Over-Engineered…
http://www.brainlazy.com/article/random-nonsense/over-engineered
The Final Architecture*
*) Maybe called μ-architecture one day ;-)
Functional Architecture
Strange Events
IngestionRaw Event
Stream
Collection Events Processing Analytics
Warehouse
Fact
Entries
Atomic Event
Frames
Data Lake
Master Data Integration
 Buffers load peeks
 Ensures message
delivery (fire & forget
for client)
 Create user journeys and
unique user sets
 Enrich dimensions
 Aggregate events to KPIs
 Ability to replay for schema
evolution
 The representation of truth
 Multidimensional data
model
 Interactive queries for
actions in realtime and
data exploration
 Eternal memory for all
events (even strange
ones)
 One schema per event
type. Time partitioned.
class Analytics Model
«fact»
WebFact
«dimension»
Zeit
«dimension»
Kampagne
Jahr
Quartal
Monat
Woche
Tag
Stunde
Minute
Kunde
+ Land: String
Partner
«dimension»
Tracking
Tracking Group
SensorTag
+ Typ: SensorTagType
Platzierung
+ Format: ImageSize
+ Kostenmodell: KostenmodellArt
Werbemittel
+ AdGroup: String
+ Format: ImageSize
+ Größe: KiloBytes
+ LandingPage: URL
+ Motif: URL
Kampagne
«dimension»
Client
Kategorie
Dev ice
+ Bezeichner: String
+ Hersteller: String
+ Typ: String
Browser
+ Typ: String
+ Version: int
«dimension»
Ausspielort
LandRegion
Stadt
«dimension»
Kanal
Kanal
«dimension»
Vermarktung
«enumeration»
SensorTagType
ORDER_TAG
MASTER_TAG
CUSTOM_TAG
Betriebssystem
+ Typ: String
+ Version: Version
⦁ Dimension: Unabhängiges Prädikat auf Metriken bei der Analyse ("kann isoliert darüber nachdenken / isoliert dazu Analysen
fahren")
⦁ Hierarchie: Sub-Prädikat auf Metriken. Erzeugt mehr als eine (zueinander diskunkte) Teilmengen der Metriken. Entspricht den gängigen
Drill-Down-Pfaden in den Reports bzw. den Batch-Aggregate-Up-Pfaden in der Aggregationslogik. Semantische Unterstrukturen: "ist Teil
von & kann nicht existieren ohne".
⦁ Asssoziation: Nicht verwendet. Separates Stammdatenmodell.
⦁ Attribut: Ermöglicht eine weitere (querschneidende) Einschränkung der Metrikmenge ergänzend zu den Hierarchien.
Domain
Website
Tracking Site
Vermarkter
Auslieferungs-
Domain
Referral
«enumerati...
KostenmodellArt
CPC
CPM
CPO
CPA
«abstract»
DimensionValue
+ id: int
+ name: String
+ sourceId: String
WebsiteFact
+ Bounces: int
+ Verweildauer: float
+ Visits: int
BasicAdFact
+ Clicks: int
+ Sichtbare Views: int
+ Validierte Clicks: int
+ View (angefragt): int
+ View (ausgeliefert): int
+ View (gemessen): int
«dimension»
Produkt
Shop
Produkt
+ Produktkategorie: String
«dimension»
Zeitfenster
Letzte X Tage
«dimension»
User
User Segment
«dimension»
Order
OrderStatus
+ Status: OrderStatus
«enumeration»
OrderStatus
IN_BEARBEITUNG
ERFOLGREICH (AKTIVIERT)
ABGELEHNT
NICHT_IN_BEARBEITUNG
UniquesFact
+ Unique Clicks: int
+ Unique Users: int
+ Unique Views: int
AdCostFact
+ CPC: int
+ Kosten: float
Conv ersionFact
+ PC: int
+ PR: int
+ PV: int
+ Umsatz PC: float
+ Umsatz PR: float
+ Umsatz PV: float
AdVisibilityFact
+ Sichtbarkeitsdauer: float
Activ atedOrderFact
+ Orders: int
+ Umsatz: float
TrackingFact
+ Orders: int
+ Page Impressions: int
+ Umsatz: float
X = {7, 14, 28, 30}
 Fault tolerant message handling
 Event handling: Apply schema, time-partitioning, De-dup, sanity
checks, pre-aggregation, filtering, fraud detection
 Tolerates delayed events
 High throughput, moderate latency (~ 1min)
Series Connection of Streaming
and Batching - all based on Spark.
IngestionRaw Event
Stream
Collection Event Data Lake Processing Analytics
Warehouse
Fact
Entries
SQL Interface
Atomic Event
Frames
 Cool programming model
 Uniform dev&ops
 Simple solution
 High compression ratio due to
column-oriented storage
 High scan speed
 Cool programming model
 Uniform dev&ops
 High performance
 Interface to R out-of-the-box
 Useful libs: MLlib, GraphX, NLP, …
 Good connectivity (JDBC,
ODBC, …)
 Interactive queries
 Uniform ops
 Can easily be replaced
due to Hive Metastore
 Obvious choice for
cloud-scale messaging
 Way the best throughput
and scalability of all
evaluated alternatives
LESSONS LEARNED
by: http://hochmeister-alpin.at
Technology Mapping
https://github.com/qaware/big-data-landscape
User Interface
Data Lake
Data Warehouse
Ingestion
Processing
Data Science Interactive Analysis Reporting & Dashboards
Data Sources
Analytics
Micro Analytics Services instead of reporting
servers.
Charting Libraries:Dashboards:
Analytics Frontends
Algorithm Libraries
Structured Data Lake: The eternal memory.
Efficient data serialization formats:
 Integated compression
 Column-oriented storage
 Predicate pushdown
Distributed Filesystem or NoSQL DB
Data Workflows ETL Jobs Massive
Parallelization
Pig Open Studio
Data Logicstics Stream
Processing
NewSQL: SQL meets NoSQL.
Polyglott Persistence
Index Machines: Fast aggregation and search.
In-Memory Databases: Fast access.
Time Series Databases
Atlas
Polyglott Analytics
Data Lake
Analytics
Warehouse
SQL
lane
R
lane
Timeseries
lane
Reporting Data Exploration
Data Science
Micro Analytics Services
Microservice
Dashboard
Microservice …
No Retention Paranoia
Data Lake
Analytics
Warehouse
 Eternal memory
 Close to raw events
 Allows replays and refills
into warehouse
Aggressive forgetting with clearly defined
retention policy per aggregation level like:
 15min:30d
 1h:4m
 …
Events
Strange Events
Continuous Tuning
IngestionRaw Event
Stream
Collection Event Data Lake Processing Analytics
Warehouse
Fact
Entries
SQL Interface
Atomic Event
Frames
Load
Generator Throughput & latency probes
In Numbers
Overall dev effort until the first release: 250 person days
Dimensions: 10 KPIs: 26
Integrated 3rd party systems: 7
Inbound data volume per day: 80GB
New data in DWH per day: 2GB
Total price of cheapest cluster which is able to handle production load:
Clickstream Analysis with Spark
THANK YOU.
@adersberger
josef.adersberger@qaware.de
Bonus Topic: Roadmap
SparkKafka HDFS
IaaS
Simplify Ops with Mesos
Faster aggregation & easier updates
with Spark-on-Solr
http://qaware.blogspot.de/2015/06/solr-with-sparks-or-how-to-submit-spark.html
Bonus Topic: Smart Aggregation
Ingestion Event Data Lake Processing Analytics
Warehouse
Fact
Entries
Analytics
Atomic Event
Frames
1 2
3
Architecture follows requirements
class Analytics Model
«fact»
WebFact
«dimension»
Zeit
«dimension»
Kampagne
Jahr
Quartal
Monat
Woche
Tag
Stunde
Minute
Kunde
+ Land: String
Partner
«dimension»
Tracking
Tracking Group
SensorTag
+ Typ: SensorTagType
Platzierung
+ Format: ImageSize
+ Kostenmodell: KostenmodellArt
Werbemittel
+ AdGroup: String
+ Format: ImageSize
+ Größe: KiloBytes
+ LandingPage: URL
+ Motif: URL
Kampagne
«dimension»
Client
Kategorie
Device
+ Bezeichner: String
+ Hersteller: String
+ Typ: String
Browser
+ Typ: String
+ Version: int
«dimension»
Ausspielort
LandRegion
Stadt
«dimension»
Kanal
Kanal
«dimension»
Vermarktung
«enumeration»
SensorTagType
ORDER_TAG
MASTER_TAG
CUSTOM_TAG
Betriebssystem
+ Typ: String
+ Version: Version
⦁ Dimension: Unabhängiges Prädikat auf Metriken bei der Analyse ("kann isoliert darüber nachdenken / isoliert dazu Analysen
fahren")
⦁ Hierarchie: Sub-Prädikat auf Metriken. Erzeugt mehr als eine (zueinander diskunkte) Teilmengen der Metriken. Entspricht den gängigen
Drill-Down-Pfaden in den Reports bzw. den Batch-Aggregate-Up-Pfaden in der Aggregationslogik. Semantische Unterstrukturen: "ist Teil
von & kann nicht existieren ohne".
⦁ Asssoziation: Nicht verwendet. Separates Stammdatenmodell.
⦁ Attribut: Ermöglicht eine weitere (querschneidende) Einschränkung der Metrikmenge ergänzend zu den Hierarchien.
Domain
Website
Tracking Site
Vermarkter
Auslieferungs-
Domain
Referral
«enumerati...
KostenmodellArt
CPC
CPM
CPO
CPA
«abstract»
DimensionValue
+ id: int
+ name: String
+ sourceId: String
WebsiteFact
+ Bounces: int
+ Verweildauer: float
+ Visits: int
BasicAdFact
+ Clicks: int
+ Sichtbare Views: int
+ Validierte Clicks: int
+ View (angefragt): int
+ View (ausgeliefert): int
+ View (gemessen): int
«dimension»
Produkt
Shop
Produkt
+ Produktkategorie: String
«dimension»
Zeitfenster
Letzte X Tage
«dimension»
User
User Segment
«dimension»
Order
OrderStatus
+ Status: OrderStatus
«enumeration»
OrderStatus
IN_BEARBEITUNG
ERFOLGREICH (AKTIVIERT)
ABGELEHNT
NICHT_IN_BEARBEITUNG
UniquesFact
+ Unique Clicks: int
+ Unique Users: int
+ Unique Views: int
AdCostFact
+ CPC: int
+ Kosten: float
ConversionFact
+ PC: int
+ PR: int
+ PV: int
+ Umsatz PC: float
+ Umsatz PR: float
+ Umsatz PV: float
AdVisibilityFact
+ Sichtbarkeitsdauer: float
ActivatedOrderFact
+ Orders: int
+ Umsatz: float
TrackingFact
+ Orders: int
+ Page Impressions: int
+ Umsatz: float
X = {7, 14, 28, 30}
act Processing
Processing
WebsiteOrderActivationAdCostConversionUniques+
Overlap
AdVisibilityBasicAdsTracking
Dimensionsv erzeichnis
aktualisieren
Page
Impressions
und Orders
zählen
Aggregation
TrackingFact
Ad
Impressions
zählen
Aggregation
BasicAdFact
CTR und
Sichtbarkeitsrate
berechnen
Inferenz der
Sichtbarkeitsdauer
Aggregation
AdVisibilityFact
Dimensionsraum
aufspannen
Pro Vektor die Ev ents und
die dort enthaltenen UserIds
und Interaktionsarten
ermitteln
Menge der UserIds pro
Interaktionsart erzeugen und deren
Mächtigkeit bestimmen
UniquesFact
User Journeys
erstellen (bzw.
LV/LC pro User)
Attribution v on Conv ersion
auf Basis v orkonfiguriertem
Conv ersion Modell
Conv ersions
zählen (PV, PC, PR)
Warenkorbwert ermitteln
bei Order-Conv ersion
(PV, PC, PR)
Aggregation
Conv ersionFact
Kosten pro
Ev ent
ermitteln Aggregation
Nicht zuweisbare
Kosten ermitteln
CostFact
Inferenz der Visits
Visits zählen
Bounces zählen
Analyse der Verweildauer
Aggregation
WebsiteFact
Order Status
ermitteln
Anzahl der nicht getrackten Orders ermitteln
Aggregation
Activ atedOrderFact
:Analytics Warehouse:Event Data Lake
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
«flow»
Data Processing WorkflowMultidimensional Data Model
Sample results
Geolocated and gender-
specific conversions.
Frequency of visits
Performance of an ad campaign

Weitere ähnliche Inhalte

PDF
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
PDF
Freie Fahrt für die Reisendeninformation mit Kafka Streams
PDF
Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!
PDF
Realtime BigData Step by Step mit Lambda, Kafka, Storm und Hadoop
PDF
Azure Data Factory – Data Management für die Cloud
PPTX
Amazon Redshift
PDF
batbern43 Fraud Detection mit Stream Analytics
PDF
Neo4j Use Cases - Graphdatenbanken im Einsatz
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Freie Fahrt für die Reisendeninformation mit Kafka Streams
Event-Streaming in Echtzeit: Der MongoDB-Kafka-Connector in Action!
Realtime BigData Step by Step mit Lambda, Kafka, Storm und Hadoop
Azure Data Factory – Data Management für die Cloud
Amazon Redshift
batbern43 Fraud Detection mit Stream Analytics
Neo4j Use Cases - Graphdatenbanken im Einsatz

Was ist angesagt? (14)

PDF
BPMN, BPEL oder vielleicht doch Java? Oder auch noch ESB?
PDF
Hadoop in modernen BI-Infrastrukturen
PDF
Hadoop Einführung @codecentric
PDF
Automotive Information Research driven by Apache Solr
PPTX
Warum sap hana sql data warehousing
PPTX
Webinar Neues von der re:invent 2013 Teil 2: Kinesis, AppStream, WorkSpaces
PDF
MongoDB Atlas – der beste Weg, MongoDB in der Cloud zu betreiben 2
PPTX
BARC Studie Webinar: Ausgereifte Analysen mit Apache Hadoop
PDF
Hadoop 2.0 - The Next Level
PPTX
Eval Apache Storm vs. Spark Streaming - German
PDF
Big Data: Kunden auf der Spur
PPT
Daten ohne Grenzen – Big Data
PPTX
Big Data Bullshit Bingo
PPTX
Data Virtualization - Supernova
BPMN, BPEL oder vielleicht doch Java? Oder auch noch ESB?
Hadoop in modernen BI-Infrastrukturen
Hadoop Einführung @codecentric
Automotive Information Research driven by Apache Solr
Warum sap hana sql data warehousing
Webinar Neues von der re:invent 2013 Teil 2: Kinesis, AppStream, WorkSpaces
MongoDB Atlas – der beste Weg, MongoDB in der Cloud zu betreiben 2
BARC Studie Webinar: Ausgereifte Analysen mit Apache Hadoop
Hadoop 2.0 - The Next Level
Eval Apache Storm vs. Spark Streaming - German
Big Data: Kunden auf der Spur
Daten ohne Grenzen – Big Data
Big Data Bullshit Bingo
Data Virtualization - Supernova
Anzeige

Ähnlich wie Clickstream Analysis with Spark (20)

PPTX
Big Data Webinar (Deutsch)
PDF
Dataservices - Data Processing mit Microservices
PDF
worldiety GmbH - Datenanalyse
PDF
JavaFX Real-World Apps
PPTX
Analytic powerhouse parallel data warehouse und r
PDF
Folien2 spss watson roadshow_predictive
PPTX
EventDB - Hamburg 2013
PDF
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
PPTX
Data Vault DWH Automation
PDF
Webcast: SAP on Azure für den Mittelstand - Erfolgsfaktor Integration
PDF
Eine Referenzarchitektur für das Digitale Produkt
PDF
Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...
PPTX
Technisches SEO 2019 Berlin SEO Campixx
PDF
Amazon Web Services
PDF
Mit ChatGPT Dinosaurier besiegen - Möglichkeiten und Grenzen von LLM für die ...
PDF
Data Is The New Oil
PPT
Skalierung & Performance
PDF
Automatisierung von Client-seitigen Web-Performance-Optimierungen
PDF
Best practise 5 anwendungsfälle der google analytics api
PDF
Apache Solr Revisited 2015
Big Data Webinar (Deutsch)
Dataservices - Data Processing mit Microservices
worldiety GmbH - Datenanalyse
JavaFX Real-World Apps
Analytic powerhouse parallel data warehouse und r
Folien2 spss watson roadshow_predictive
EventDB - Hamburg 2013
Cloud Wars – what‘s the smartest data platform? Vergleich Microsoft Azure, Am...
Data Vault DWH Automation
Webcast: SAP on Azure für den Mittelstand - Erfolgsfaktor Integration
Eine Referenzarchitektur für das Digitale Produkt
Mit Prozessautomatisierung und Co-Creation zur Digitalisierung der Öffentlich...
Technisches SEO 2019 Berlin SEO Campixx
Amazon Web Services
Mit ChatGPT Dinosaurier besiegen - Möglichkeiten und Grenzen von LLM für die ...
Data Is The New Oil
Skalierung & Performance
Automatisierung von Client-seitigen Web-Performance-Optimierungen
Best practise 5 anwendungsfälle der google analytics api
Apache Solr Revisited 2015
Anzeige

Mehr von Josef Adersberger (15)

PDF
Into the cloud, you better fly by sight
PDF
Serverless containers … with source-to-image
PDF
The need for speed – transforming insurance into a cloud-native industry
PDF
The good, the bad, and the ugly of migrating hundreds of legacy applications ...
PDF
Patterns and Pains of Migrating Legacy Applications to Kubernetes
PDF
Istio By Example (extended version)
PDF
Docker und Kubernetes Patterns & Anti-Patterns
PDF
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
PDF
Dataservices - Processing Big Data The Microservice Way
PDF
Cloud Native und Java EE: Freund oder Feind?
PDF
Time Series Processing with Solr and Spark
PDF
JEE on DC/OS
PDF
Time Series Processing with Apache Spark
PDF
Big Data Landscape 2016
PDF
Software-Sanierung: Wie man kranke Systeme wieder gesund macht.
Into the cloud, you better fly by sight
Serverless containers … with source-to-image
The need for speed – transforming insurance into a cloud-native industry
The good, the bad, and the ugly of migrating hundreds of legacy applications ...
Patterns and Pains of Migrating Legacy Applications to Kubernetes
Istio By Example (extended version)
Docker und Kubernetes Patterns & Anti-Patterns
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
Dataservices - Processing Big Data The Microservice Way
Cloud Native und Java EE: Freund oder Feind?
Time Series Processing with Solr and Spark
JEE on DC/OS
Time Series Processing with Apache Spark
Big Data Landscape 2016
Software-Sanierung: Wie man kranke Systeme wieder gesund macht.

Clickstream Analysis with Spark

  • 1. CLICKSTREAM ANALYSIS WITH SPARK – UNDERSTANDING VISITORS IN REAL-TIME Dr. Josef Adersberger QAware GmbH, Germany
  • 3. One Kettle to Rule ‘em All Web Tracking Ad Tracking ERP CRM
  • 4. One Kettle to Rule ‘em All Retention Reach Monetarization steer …  Campaigns  Offers  Contents
  • 7. The First Sketch (= real-time) Tableau
  • 8. User Journey Analysis C V VT VT VT C X C V V V V V V V V C V V C V V V VT VT V V V VT C V X Event stream: User journeys: Web / Ad tracking KPIs:  Unique users  Conversions  Ad costs / conversion value  … V X VT C Click View View Time Conversion
  • 10. „Larry & Friends“ Architecture Collector Aggregation SQL DB Runs not well for more than 1 TB data in terms of ingestion speed, query time and optimization efforts
  • 12. „Hadoop & Friends“ Architecture Collector Batch Processor [Hadoop] Collector Event Data Lake Batch Processor Analytics DB JSON Stream Aggregation takes too long Cumbersome programming model (can be solved with pig, cascading et al.) Not interactive enough
  • 14. κ-Architecture Collector Stream Processor Analytics DB Persistence JSON Stream Cumbersome programming model Over-engineered: We only need 15min real-time ;-) Stateful aggregations (unique x, conversions) require a separate DB with high throughput and fast aggregations & lookups.
  • 15. λ-Architecture Collector Event Processor Event Data Lake Batch Processor Analytics DB Speed Layer Batch Layer JSON Stream Cumbersome programming model Complex architecture Redundant logic
  • 17. The Final Architecture* *) Maybe called μ-architecture one day ;-)
  • 18. Functional Architecture Strange Events IngestionRaw Event Stream Collection Events Processing Analytics Warehouse Fact Entries Atomic Event Frames Data Lake Master Data Integration  Buffers load peeks  Ensures message delivery (fire & forget for client)  Create user journeys and unique user sets  Enrich dimensions  Aggregate events to KPIs  Ability to replay for schema evolution  The representation of truth  Multidimensional data model  Interactive queries for actions in realtime and data exploration  Eternal memory for all events (even strange ones)  One schema per event type. Time partitioned. class Analytics Model «fact» WebFact «dimension» Zeit «dimension» Kampagne Jahr Quartal Monat Woche Tag Stunde Minute Kunde + Land: String Partner «dimension» Tracking Tracking Group SensorTag + Typ: SensorTagType Platzierung + Format: ImageSize + Kostenmodell: KostenmodellArt Werbemittel + AdGroup: String + Format: ImageSize + Größe: KiloBytes + LandingPage: URL + Motif: URL Kampagne «dimension» Client Kategorie Dev ice + Bezeichner: String + Hersteller: String + Typ: String Browser + Typ: String + Version: int «dimension» Ausspielort LandRegion Stadt «dimension» Kanal Kanal «dimension» Vermarktung «enumeration» SensorTagType ORDER_TAG MASTER_TAG CUSTOM_TAG Betriebssystem + Typ: String + Version: Version ⦁ Dimension: Unabhängiges Prädikat auf Metriken bei der Analyse ("kann isoliert darüber nachdenken / isoliert dazu Analysen fahren") ⦁ Hierarchie: Sub-Prädikat auf Metriken. Erzeugt mehr als eine (zueinander diskunkte) Teilmengen der Metriken. Entspricht den gängigen Drill-Down-Pfaden in den Reports bzw. den Batch-Aggregate-Up-Pfaden in der Aggregationslogik. Semantische Unterstrukturen: "ist Teil von & kann nicht existieren ohne". ⦁ Asssoziation: Nicht verwendet. Separates Stammdatenmodell. ⦁ Attribut: Ermöglicht eine weitere (querschneidende) Einschränkung der Metrikmenge ergänzend zu den Hierarchien. Domain Website Tracking Site Vermarkter Auslieferungs- Domain Referral «enumerati... KostenmodellArt CPC CPM CPO CPA «abstract» DimensionValue + id: int + name: String + sourceId: String WebsiteFact + Bounces: int + Verweildauer: float + Visits: int BasicAdFact + Clicks: int + Sichtbare Views: int + Validierte Clicks: int + View (angefragt): int + View (ausgeliefert): int + View (gemessen): int «dimension» Produkt Shop Produkt + Produktkategorie: String «dimension» Zeitfenster Letzte X Tage «dimension» User User Segment «dimension» Order OrderStatus + Status: OrderStatus «enumeration» OrderStatus IN_BEARBEITUNG ERFOLGREICH (AKTIVIERT) ABGELEHNT NICHT_IN_BEARBEITUNG UniquesFact + Unique Clicks: int + Unique Users: int + Unique Views: int AdCostFact + CPC: int + Kosten: float Conv ersionFact + PC: int + PR: int + PV: int + Umsatz PC: float + Umsatz PR: float + Umsatz PV: float AdVisibilityFact + Sichtbarkeitsdauer: float Activ atedOrderFact + Orders: int + Umsatz: float TrackingFact + Orders: int + Page Impressions: int + Umsatz: float X = {7, 14, 28, 30}  Fault tolerant message handling  Event handling: Apply schema, time-partitioning, De-dup, sanity checks, pre-aggregation, filtering, fraud detection  Tolerates delayed events  High throughput, moderate latency (~ 1min)
  • 19. Series Connection of Streaming and Batching - all based on Spark. IngestionRaw Event Stream Collection Event Data Lake Processing Analytics Warehouse Fact Entries SQL Interface Atomic Event Frames  Cool programming model  Uniform dev&ops  Simple solution  High compression ratio due to column-oriented storage  High scan speed  Cool programming model  Uniform dev&ops  High performance  Interface to R out-of-the-box  Useful libs: MLlib, GraphX, NLP, …  Good connectivity (JDBC, ODBC, …)  Interactive queries  Uniform ops  Can easily be replaced due to Hive Metastore  Obvious choice for cloud-scale messaging  Way the best throughput and scalability of all evaluated alternatives
  • 21. Technology Mapping https://github.com/qaware/big-data-landscape User Interface Data Lake Data Warehouse Ingestion Processing Data Science Interactive Analysis Reporting & Dashboards Data Sources Analytics Micro Analytics Services instead of reporting servers. Charting Libraries:Dashboards: Analytics Frontends Algorithm Libraries Structured Data Lake: The eternal memory. Efficient data serialization formats:  Integated compression  Column-oriented storage  Predicate pushdown Distributed Filesystem or NoSQL DB Data Workflows ETL Jobs Massive Parallelization Pig Open Studio Data Logicstics Stream Processing NewSQL: SQL meets NoSQL. Polyglott Persistence Index Machines: Fast aggregation and search. In-Memory Databases: Fast access. Time Series Databases Atlas
  • 24. No Retention Paranoia Data Lake Analytics Warehouse  Eternal memory  Close to raw events  Allows replays and refills into warehouse Aggressive forgetting with clearly defined retention policy per aggregation level like:  15min:30d  1h:4m  … Events Strange Events
  • 25. Continuous Tuning IngestionRaw Event Stream Collection Event Data Lake Processing Analytics Warehouse Fact Entries SQL Interface Atomic Event Frames Load Generator Throughput & latency probes
  • 26. In Numbers Overall dev effort until the first release: 250 person days Dimensions: 10 KPIs: 26 Integrated 3rd party systems: 7 Inbound data volume per day: 80GB New data in DWH per day: 2GB Total price of cheapest cluster which is able to handle production load:
  • 29. Bonus Topic: Roadmap SparkKafka HDFS IaaS Simplify Ops with Mesos Faster aggregation & easier updates with Spark-on-Solr http://qaware.blogspot.de/2015/06/solr-with-sparks-or-how-to-submit-spark.html
  • 30. Bonus Topic: Smart Aggregation Ingestion Event Data Lake Processing Analytics Warehouse Fact Entries Analytics Atomic Event Frames 1 2 3
  • 31. Architecture follows requirements class Analytics Model «fact» WebFact «dimension» Zeit «dimension» Kampagne Jahr Quartal Monat Woche Tag Stunde Minute Kunde + Land: String Partner «dimension» Tracking Tracking Group SensorTag + Typ: SensorTagType Platzierung + Format: ImageSize + Kostenmodell: KostenmodellArt Werbemittel + AdGroup: String + Format: ImageSize + Größe: KiloBytes + LandingPage: URL + Motif: URL Kampagne «dimension» Client Kategorie Device + Bezeichner: String + Hersteller: String + Typ: String Browser + Typ: String + Version: int «dimension» Ausspielort LandRegion Stadt «dimension» Kanal Kanal «dimension» Vermarktung «enumeration» SensorTagType ORDER_TAG MASTER_TAG CUSTOM_TAG Betriebssystem + Typ: String + Version: Version ⦁ Dimension: Unabhängiges Prädikat auf Metriken bei der Analyse ("kann isoliert darüber nachdenken / isoliert dazu Analysen fahren") ⦁ Hierarchie: Sub-Prädikat auf Metriken. Erzeugt mehr als eine (zueinander diskunkte) Teilmengen der Metriken. Entspricht den gängigen Drill-Down-Pfaden in den Reports bzw. den Batch-Aggregate-Up-Pfaden in der Aggregationslogik. Semantische Unterstrukturen: "ist Teil von & kann nicht existieren ohne". ⦁ Asssoziation: Nicht verwendet. Separates Stammdatenmodell. ⦁ Attribut: Ermöglicht eine weitere (querschneidende) Einschränkung der Metrikmenge ergänzend zu den Hierarchien. Domain Website Tracking Site Vermarkter Auslieferungs- Domain Referral «enumerati... KostenmodellArt CPC CPM CPO CPA «abstract» DimensionValue + id: int + name: String + sourceId: String WebsiteFact + Bounces: int + Verweildauer: float + Visits: int BasicAdFact + Clicks: int + Sichtbare Views: int + Validierte Clicks: int + View (angefragt): int + View (ausgeliefert): int + View (gemessen): int «dimension» Produkt Shop Produkt + Produktkategorie: String «dimension» Zeitfenster Letzte X Tage «dimension» User User Segment «dimension» Order OrderStatus + Status: OrderStatus «enumeration» OrderStatus IN_BEARBEITUNG ERFOLGREICH (AKTIVIERT) ABGELEHNT NICHT_IN_BEARBEITUNG UniquesFact + Unique Clicks: int + Unique Users: int + Unique Views: int AdCostFact + CPC: int + Kosten: float ConversionFact + PC: int + PR: int + PV: int + Umsatz PC: float + Umsatz PR: float + Umsatz PV: float AdVisibilityFact + Sichtbarkeitsdauer: float ActivatedOrderFact + Orders: int + Umsatz: float TrackingFact + Orders: int + Page Impressions: int + Umsatz: float X = {7, 14, 28, 30} act Processing Processing WebsiteOrderActivationAdCostConversionUniques+ Overlap AdVisibilityBasicAdsTracking Dimensionsv erzeichnis aktualisieren Page Impressions und Orders zählen Aggregation TrackingFact Ad Impressions zählen Aggregation BasicAdFact CTR und Sichtbarkeitsrate berechnen Inferenz der Sichtbarkeitsdauer Aggregation AdVisibilityFact Dimensionsraum aufspannen Pro Vektor die Ev ents und die dort enthaltenen UserIds und Interaktionsarten ermitteln Menge der UserIds pro Interaktionsart erzeugen und deren Mächtigkeit bestimmen UniquesFact User Journeys erstellen (bzw. LV/LC pro User) Attribution v on Conv ersion auf Basis v orkonfiguriertem Conv ersion Modell Conv ersions zählen (PV, PC, PR) Warenkorbwert ermitteln bei Order-Conv ersion (PV, PC, PR) Aggregation Conv ersionFact Kosten pro Ev ent ermitteln Aggregation Nicht zuweisbare Kosten ermitteln CostFact Inferenz der Visits Visits zählen Bounces zählen Analyse der Verweildauer Aggregation WebsiteFact Order Status ermitteln Anzahl der nicht getrackten Orders ermitteln Aggregation Activ atedOrderFact :Analytics Warehouse:Event Data Lake «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» «flow» Data Processing WorkflowMultidimensional Data Model
  • 32. Sample results Geolocated and gender- specific conversions. Frequency of visits Performance of an ad campaign