SlideShare una empresa de Scribd logo
1 de 76
Descargar para leer sin conexión
Analytics Spideo
Cassandra Day
1
Mouna Damak damak@spideo.tv
Paul de Monchy monchy@spideo.tv
Randa Zarkik zarkik@spideo.tv /
@AFCRanda
Mardi 16 juin 2015
Plan
1.  Spideo
2.  Analytics
3.  Pourquoi Cassandra ?
4.  Etude de cas
I. Compteur avec filtres
II. Top 10
III. Utilisateurs actifs
5.  Conclusion
Plan
1.  Spideo
2.  Analytics
3.  Pourquoi Cassandra ?
4.  Etude de cas
I. Compteur avec filtres
II. Top 10
III. Utilisateurs actifs
5.  Conclusion
4
Qu’allez vous regarder ce soir ?
	
  
75%	
  d’indécis	
  devant	
  leur	
  TV	
  	
  
Rendez-moi mon vendeur du vidéoclub !
Service de recommandation “content centric”
Toujours expliquer la recommandation pour créer un lien
de confiance avec les utilisateurs
Les Avantages des algorithmes de Spideo :
-  Temps réels
-  Scalables
-  Explicables
-  A fait ses preuves
Algorithmes de recommandation innovants
Mood-Based
Discovery
Related ContentProfile-Based
Suggestions
Semantic Search
Quelques clients actuels de nos solutions
Plan
1.  Spideo
2.  Analytics
3.  Pourquoi Cassandra ?
4.  Etude de cas
I. Compteur avec filtres
II. Top 10
III. Utilisateurs actifs
5.  Conclusion
Content and
User Metrics
Business Rules User
Segmentation
Des analytics...
...pour aider nos clients à bien analyser et mieux monétiser
leurs services
Plan
1.  Spideo
2.  Analytics
3.  Pourquoi Cassandra ?
4.  Etude de cas
I. Compteur avec filtres
II. Top 10
III. Utilisateurs actifs
5.  Conclusion
12
Il était une fois … analytics
13
Must have
-  Scalabilité
-  Tolérance aux pannes
-  Haute disponibilité
-  Critères de performance :
. Écriture : 2000 logs/s
. Lecture : < 60 ms/requête sur une période d’1 mois
14
Base de données distribuée
15
Oui mais laquelle ?
16
17
18
19
Mature
Intuitive
Flexible
Performante
Distribuée
“ Hype ”
20
Le POC
●  Une requête complexe
●  Temps de réponse à ISO config hardware
●  Une semaine pour l’implémenter en Cassandra et PostreSQL
21
22
Cassandra
36 ms
PostreSQL
~ 3 s
Après tuning
~ 1 s
Temps de réponse sur toute l’année
et tous les segments
=> 28x plus rapide
Le CAP
23sources: Cassandra: the Definitive Guide.
Les cerises sur le gâteau
24
Timeseries
25
Counter
26
Le vote
27
And the winner is ...
28
29
30
Concrètement, comment ça marche?
31
Plan
1.  Spideo
2.  Analytics
3.  Pourquoi Cassandra ?
4.  Etude de cas
I. Compteur avec filtres
II. Top 10
III. Utilisateurs actifs
5.  Conclusion
Rappel dashboard
33
Compteurs avec filtres
34
[Mood]
[Theme]
[Format]
Envies (moods)
35
Thèmes
36
Quelques thèmes
Format
37
Définition du use case
38
Nombre de vues sur les films
qui correspondent à l’envie rire,
et au thème « en voyage »
La requête d’abord
39
Si on normalise :
=> Problème : toute la table sera remontée en RAM pour faire le count
40
Si on dénormalise:
41
CREATE TABLE watches(
mood text,
theme text,
format text,
day int,
total counter,
PRIMARY KEY ((mood,theme, format), day)
) CLUSTERING ORDER BY (day ASC)
# partition
=
Filtre
clustering column
Dans cette modélisation, on aura autant
de partitions que de combinaison
possibles de
(mood, theme, format)
42
Cardinalité pour un contenu
43
(mood, theme, format)
1 + 3 1 + 8 1 + 1
= 4 x 9 x 2 = 72
Cardinalité totale
44
(mood, theme, format)
1 + 23 1 + 749 1 + 12
= 24 x 750 x 13 = 234 000
Un watch de film Rire et En voyage
=> On écrit 8 fois ( 2 * 2 * 2)
45
mood
Avantage :
Temps de réponse instantané
Inconvénient :
Nombre d’écriture important
46
Plan
1.  Spideo
2.  Analytics
3.  Pourquoi Cassandra ?
4.  Etude de cas
I. Compteur avec filtres
II. Top 10
III. Utilisateurs actifs
5.  Conclusion
Classement Top 10
Exemple: Top 10 des contenus les plus regardés
48
Classement Top 10
49
Classement Top 10
50
CREATE TABLE watches_per_content(
day text,
content_id text,
nb_of_watch counter,
total counter static,
PRIMARY KEY ((day), content_id)
# partition clustering column
1- Table de compteur: compter le nombre de vues par contenu
Classement Top 10
	
  
Map<day,	
  SortedMap<content_id,nb_of_watch>>	
  
51
01-01-2015 52 175
id_Divergent id_The_Other_Women id_Noah
20 067 18 081 14 027
# partition total
1- Table de compteur:
Classement Top 10
Map<day,	
  SortedMap<nbwatch,SortedMap<content,_>>	
  
52
01-01-2015
20 067 18 081 14 027
Divergent The Other Women Noah
# partition
2- Table de tri:
Classement Top 10
53
CREATE TABLE content_ranking(
day text,
nb_of_watch bigint,
content_id text,
PRIMARY KEY ((day), nb_of_watch, content_id)
) CLUSTERING ORDER BY (nb_of_watch DESC, content_id ASC)
Ordre sur le nb de vues
2- Table de tri: trier les contenus par nombre de vues.
Classement Top 10
54
CREATE TABLE content_ranking(
day text,
nb_of_watch bigint,
content_id text,
PRIMARY KEY ((day), nb_of_watch, content_id)
) CLUSTERING ORDER BY (nb_of_watch DESC, content_id
ASC)
CREATE TABLE watches_per_content(
day text,
content_id text,
nb_of_watch counter,
total counter static,
PRIMARY KEY ((day), content_id)
Table où on écrit Table où on lit
Batchs
Plan
1.  Spideo
2.  Analytics
3.  Pourquoi Cassandra ?
4.  Etude de cas
I. Compteur avec filtres
II. Top 10
III. Utilisateurs actifs
5.  Conclusion
Utilisateurs actifs
56
Utilisateurs actifs
Nombre d’utilisateurs uniques qui
interagissent avec notre système
sur une période donnée
(arbitraire)
57
Utilisateurs actifs
58
Exemple: Nombre de vues
Utilisateurs actifs
59
Utilisateurs actifs
+  Écrire : Simple update
-  Lire : SELECT count(*) WHERE day=”16-06-2015”
60
CREATE TABLE active_users(
day text,
user_id text,
nb_of_watch counter,
PRIMARY KEY ((day), user_id)
# partition clustering column
1ère Approche: Table de compteurs
Utilisateurs actifs
61
Utilisateurs actifs
+  Écrire : Simple update
-  Lire : SELECT count(*) WHERE month=”06-2015”
62
1ère Approche: Table de compteurs
CREATE TABLE active_users_by_week(
day text,
user_id text,
nb_of_watch counter,
PRIMARY KEY ((week), user_id)
CREATE TABLE active_users_by_month(
day text,
user_id text,
nb_of_watch counter,
PRIMARY KEY ((month), user_id)
Utilisateurs actifs
+  Lecture instantanée
-  Batchs (précalculs)
-  Pas de période aléatoire
63
2ème Approche: Mettre les count en cache
CREATE TABLE active_users_by_day_cache(
day text,
users bigint,
PRIMARY KEY (day)
# partition
Utilisateurs actifs
+  Période quelconque
-  Lent
64
3ème Approche: Utiliser des Sets
CREATE TABLE active_users_with_set(
day text,
user_ids set<text>,
PRIMARY KEY (day)
# partition
Utilisateurs actifs
65
3ème Approche: Utiliser des Sets
Utilisateurs actifs
66
Utilisateurs actifs
67
Utilisateurs actifs
http://fr.slideshare.net/doanduyhai/distributed-algorithms-for-big-data-geecon
Approche Espace requis Cardinalité Marge d’erreur
Set 10M 67 801 0%
HyperLogLog 512 octets 70 002 3%
68
4ème Approche:
HyperLogLog : cardinalité estimée d’éléments uniques
Utilisateurs actifs
69
4ème Approche:
HyperLogLog
Utilisateurs actifs
70
4ème Approche:
HyperLogLog
CREATE TABLE active_users_with_hll(
day text,
hll blob,
PRIMARY KEY (day)
hll-jour-1 ⋃ hll-jour-2 = hll sur deux jours
https://github.com/aggregateknowledge/java-hll
Utilisateurs actifs
71
4ème Approche:
HyperLogLog
Approche Cardinalité Temps de réponse
Set 1 666 883 7 s
HyperLogLog 1 712 563 25 ms
× 28
Marge d’erreur : 2.7%
Utilisateurs actifs
72
Plan
1.  Spideo
2.  Analytics
3.  Pourquoi Cassandra ?
4.  Etude de cas
I. Compteur avec filtres
II. Top 10
III. Utilisateurs actifs
5.  Conclusion
Conclusion - Quelques chiffres
●  ~ 1 350 000 écriture / 24 h / client
●  ~ 20 log / s / client
●  objectif 2000 log / s (demande d’un client)
●  Au démarrage :
o  1 cluster : 3 machine à 160 go
o  temps de réponse maxi 2s pour un an
74
Conclusion
●  Écrire les requêtes avant de concevoir le modèle.
●  Se permettre de répliquer les données.
●  Ne pas hésiter à chercher dans la littérature.
75
Conclusion
Questions ?
Remarques ?
Recommandations ?
76
damak@spideo.tv
monchy@spideo.tv
zarkik@spideo.tv / @AFCRanda

Más contenido relacionado

Similar a Spideo: Movie Recommendation Analytics with Cassandra (Français)

Outils de résolution des problèmes. .pdf
Outils de résolution des problèmes. .pdfOutils de résolution des problèmes. .pdf
Outils de résolution des problèmes. .pdfzahoualayoub
 
Outils et méthodes de traitement de problèmes
Outils et méthodes de traitement de problèmesOutils et méthodes de traitement de problèmes
Outils et méthodes de traitement de problèmesMouhcine Nahal
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataLudovic Piot
 
Outils d'organisation de Projet
Outils d'organisation de ProjetOutils d'organisation de Projet
Outils d'organisation de ProjetRémi Bachelet
 
20150402 meetup r addicts du printemps
20150402  meetup r addicts du printemps20150402  meetup r addicts du printemps
20150402 meetup r addicts du printempsduretteb
 
SQL Debug avec Django @ PyConFr 2015
SQL Debug avec Django @ PyConFr 2015SQL Debug avec Django @ PyConFr 2015
SQL Debug avec Django @ PyConFr 2015Rodolphe Quiédeville
 
jeu puissance 7 distanciel
jeu puissance 7 distancieljeu puissance 7 distanciel
jeu puissance 7 distancielNadia Gharbi
 
Modélisation de données pour MongoDB
Modélisation de données pour MongoDBModélisation de données pour MongoDB
Modélisation de données pour MongoDBMongoDB
 
Prometheus & Grafana - Probing and Alerting
Prometheus & Grafana - Probing and AlertingPrometheus & Grafana - Probing and Alerting
Prometheus & Grafana - Probing and AlertingDolead Engineering
 
S17 adressez vos besoins complexes de reporting avec db2 web query
S17   adressez vos besoins complexes de reporting avec db2 web queryS17   adressez vos besoins complexes de reporting avec db2 web query
S17 adressez vos besoins complexes de reporting avec db2 web queryGautier DUMAS
 
Jeu gestion de projets distanciel
Jeu gestion de projets distancielJeu gestion de projets distanciel
Jeu gestion de projets distancielNadia Gharbi
 
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1CERTyou Formation
 
Jeu résolution de problèmes_ outils qualité.pdf
Jeu résolution de problèmes_ outils qualité.pdfJeu résolution de problèmes_ outils qualité.pdf
Jeu résolution de problèmes_ outils qualité.pdfCIPE
 
Betaleadership - ima digitalday - Digitalisation et méthodes collaboratives
Betaleadership - ima digitalday - Digitalisation et méthodes collaborativesBetaleadership - ima digitalday - Digitalisation et méthodes collaboratives
Betaleadership - ima digitalday - Digitalisation et méthodes collaborativesSylvain Loubradou
 

Similar a Spideo: Movie Recommendation Analytics with Cassandra (Français) (20)

Outils de résolution des problèmes. .pdf
Outils de résolution des problèmes. .pdfOutils de résolution des problèmes. .pdf
Outils de résolution des problèmes. .pdf
 
Outils et méthodes de traitement de problèmes
Outils et méthodes de traitement de problèmesOutils et méthodes de traitement de problèmes
Outils et méthodes de traitement de problèmes
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 
PresentationMéthodologie SCRUM-2021.pptx
PresentationMéthodologie SCRUM-2021.pptxPresentationMéthodologie SCRUM-2021.pptx
PresentationMéthodologie SCRUM-2021.pptx
 
Outils d'organisation de Projet
Outils d'organisation de ProjetOutils d'organisation de Projet
Outils d'organisation de Projet
 
20150402 meetup r addicts du printemps
20150402  meetup r addicts du printemps20150402  meetup r addicts du printemps
20150402 meetup r addicts du printemps
 
SQL Debug avec Django @ PyConFr 2015
SQL Debug avec Django @ PyConFr 2015SQL Debug avec Django @ PyConFr 2015
SQL Debug avec Django @ PyConFr 2015
 
jeu puissance 7 distanciel
jeu puissance 7 distancieljeu puissance 7 distanciel
jeu puissance 7 distanciel
 
Modélisation de données pour MongoDB
Modélisation de données pour MongoDBModélisation de données pour MongoDB
Modélisation de données pour MongoDB
 
Prometheus & Grafana - Probing and Alerting
Prometheus & Grafana - Probing and AlertingPrometheus & Grafana - Probing and Alerting
Prometheus & Grafana - Probing and Alerting
 
S17 adressez vos besoins complexes de reporting avec db2 web query
S17   adressez vos besoins complexes de reporting avec db2 web queryS17   adressez vos besoins complexes de reporting avec db2 web query
S17 adressez vos besoins complexes de reporting avec db2 web query
 
Jeu gestion de projets distanciel
Jeu gestion de projets distancielJeu gestion de projets distanciel
Jeu gestion de projets distanciel
 
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
 
Jade dimax
Jade dimaxJade dimax
Jade dimax
 
Debuteraveclesmls
DebuteraveclesmlsDebuteraveclesmls
Debuteraveclesmls
 
Pytong2015
Pytong2015Pytong2015
Pytong2015
 
Jeu résolution de problèmes_ outils qualité.pdf
Jeu résolution de problèmes_ outils qualité.pdfJeu résolution de problèmes_ outils qualité.pdf
Jeu résolution de problèmes_ outils qualité.pdf
 
Betaleadership - ima digitalday - Digitalisation et méthodes collaboratives
Betaleadership - ima digitalday - Digitalisation et méthodes collaborativesBetaleadership - ima digitalday - Digitalisation et méthodes collaboratives
Betaleadership - ima digitalday - Digitalisation et méthodes collaboratives
 

Más de DataStax Academy

Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
Forrester CXNYC 2017 - Delivering great real-time cx is a true craftForrester CXNYC 2017 - Delivering great real-time cx is a true craft
Forrester CXNYC 2017 - Delivering great real-time cx is a true craftDataStax Academy
 
Introduction to DataStax Enterprise Graph Database
Introduction to DataStax Enterprise Graph DatabaseIntroduction to DataStax Enterprise Graph Database
Introduction to DataStax Enterprise Graph DatabaseDataStax Academy
 
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
Introduction to DataStax Enterprise Advanced Replication with Apache CassandraIntroduction to DataStax Enterprise Advanced Replication with Apache Cassandra
Introduction to DataStax Enterprise Advanced Replication with Apache CassandraDataStax Academy
 
Cassandra on Docker @ Walmart Labs
Cassandra on Docker @ Walmart LabsCassandra on Docker @ Walmart Labs
Cassandra on Docker @ Walmart LabsDataStax Academy
 
Cassandra 3.0 Data Modeling
Cassandra 3.0 Data ModelingCassandra 3.0 Data Modeling
Cassandra 3.0 Data ModelingDataStax Academy
 
Cassandra Adoption on Cisco UCS & Open stack
Cassandra Adoption on Cisco UCS & Open stackCassandra Adoption on Cisco UCS & Open stack
Cassandra Adoption on Cisco UCS & Open stackDataStax Academy
 
Data Modeling for Apache Cassandra
Data Modeling for Apache CassandraData Modeling for Apache Cassandra
Data Modeling for Apache CassandraDataStax Academy
 
Production Ready Cassandra
Production Ready CassandraProduction Ready Cassandra
Production Ready CassandraDataStax Academy
 
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & PythonCassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & PythonDataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 1
Cassandra @ Sony: The good, the bad, and the ugly part 1Cassandra @ Sony: The good, the bad, and the ugly part 1
Cassandra @ Sony: The good, the bad, and the ugly part 1DataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 2
Cassandra @ Sony: The good, the bad, and the ugly part 2Cassandra @ Sony: The good, the bad, and the ugly part 2
Cassandra @ Sony: The good, the bad, and the ugly part 2DataStax Academy
 
Standing Up Your First Cluster
Standing Up Your First ClusterStanding Up Your First Cluster
Standing Up Your First ClusterDataStax Academy
 
Real Time Analytics with Dse
Real Time Analytics with DseReal Time Analytics with Dse
Real Time Analytics with DseDataStax Academy
 
Introduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache CassandraIntroduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache CassandraDataStax Academy
 
Enabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseEnabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseDataStax Academy
 
Advanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraAdvanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraDataStax Academy
 

Más de DataStax Academy (20)

Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
Forrester CXNYC 2017 - Delivering great real-time cx is a true craftForrester CXNYC 2017 - Delivering great real-time cx is a true craft
Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
 
Introduction to DataStax Enterprise Graph Database
Introduction to DataStax Enterprise Graph DatabaseIntroduction to DataStax Enterprise Graph Database
Introduction to DataStax Enterprise Graph Database
 
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
Introduction to DataStax Enterprise Advanced Replication with Apache CassandraIntroduction to DataStax Enterprise Advanced Replication with Apache Cassandra
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
 
Cassandra on Docker @ Walmart Labs
Cassandra on Docker @ Walmart LabsCassandra on Docker @ Walmart Labs
Cassandra on Docker @ Walmart Labs
 
Cassandra 3.0 Data Modeling
Cassandra 3.0 Data ModelingCassandra 3.0 Data Modeling
Cassandra 3.0 Data Modeling
 
Cassandra Adoption on Cisco UCS & Open stack
Cassandra Adoption on Cisco UCS & Open stackCassandra Adoption on Cisco UCS & Open stack
Cassandra Adoption on Cisco UCS & Open stack
 
Data Modeling for Apache Cassandra
Data Modeling for Apache CassandraData Modeling for Apache Cassandra
Data Modeling for Apache Cassandra
 
Coursera Cassandra Driver
Coursera Cassandra DriverCoursera Cassandra Driver
Coursera Cassandra Driver
 
Production Ready Cassandra
Production Ready CassandraProduction Ready Cassandra
Production Ready Cassandra
 
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & PythonCassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
 
Cassandra @ Sony: The good, the bad, and the ugly part 1
Cassandra @ Sony: The good, the bad, and the ugly part 1Cassandra @ Sony: The good, the bad, and the ugly part 1
Cassandra @ Sony: The good, the bad, and the ugly part 1
 
Cassandra @ Sony: The good, the bad, and the ugly part 2
Cassandra @ Sony: The good, the bad, and the ugly part 2Cassandra @ Sony: The good, the bad, and the ugly part 2
Cassandra @ Sony: The good, the bad, and the ugly part 2
 
Standing Up Your First Cluster
Standing Up Your First ClusterStanding Up Your First Cluster
Standing Up Your First Cluster
 
Real Time Analytics with Dse
Real Time Analytics with DseReal Time Analytics with Dse
Real Time Analytics with Dse
 
Introduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache CassandraIntroduction to Data Modeling with Apache Cassandra
Introduction to Data Modeling with Apache Cassandra
 
Cassandra Core Concepts
Cassandra Core ConceptsCassandra Core Concepts
Cassandra Core Concepts
 
Enabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax EnterpriseEnabling Search in your Cassandra Application with DataStax Enterprise
Enabling Search in your Cassandra Application with DataStax Enterprise
 
Bad Habits Die Hard
Bad Habits Die Hard Bad Habits Die Hard
Bad Habits Die Hard
 
Advanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache CassandraAdvanced Data Modeling with Apache Cassandra
Advanced Data Modeling with Apache Cassandra
 
Advanced Cassandra
Advanced CassandraAdvanced Cassandra
Advanced Cassandra
 

Spideo: Movie Recommendation Analytics with Cassandra (Français)