présentation google dataflow
TRANSCRIPT
![Page 1: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/1.jpg)
Google Dataflow
![Page 2: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/2.jpg)
Sommaire
Origine et principe
Mise en place
Concepts
Windowing / Watermark
![Page 3: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/3.jpg)
Présentation GCP
![Page 4: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/4.jpg)
Dataflow origine
MapReduce2004
FlumeJava2010
MillWheel2013
![Page 5: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/5.jpg)
Présentation Dataflow
“ Se concentrer sur la logique des process plutôt que sur l’orchestration physique pour mettre des traitements en
parallèle “
![Page 6: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/6.jpg)
Présentation Dataflow
SDK
Job de Traitement de donnée
GCP Service
Intégration et utilisation de la Google Cloud
Platform et de ses outils
![Page 7: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/7.jpg)
Mise en place sur le cloud
Création Compte GCPMettre disponible les APIs :
Google Cloud Dataflow APICompute Engine API (Google Compute Engine)Google Cloud Logging APIGoogle Cloud StorageGoogle Cloud Storage JSON APIBigQuery APIGoogle Cloud Pub/SubGoogle Cloud Datastore API
![Page 8: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/8.jpg)
Mise en place local
![Page 9: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/9.jpg)
Launcher
DirectPipelineRunner : execution local
DataFlowPipelineRunner : lance l’execution / s’arrete
BlockingDataflowPipelineRunner : lance l’execution et attends qu’il se termine.
![Page 10: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/10.jpg)
Launcher
Cloud Storage BucketsBigQuery DatasetsPub/Sub Topics and SubscriptionsCloud Datastore
=> Go to the Pipelines World
![Page 11: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/11.jpg)
Concept
Source
PCollection PCollection PCollectionTransform Transform
PIPELINES
Sink
Sink
SinkSource
![Page 12: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/12.jpg)
Concept
Pipelines : ensemble d’opération qui lis les données, les transforme et qui écris les résultats / job PCollections : Ensemble de données (bounded / unbounded )Transforms : Action pour manipuler les données, prend N PCollection en entrée et en fournit une autre en sortieI/O sources and sinks : sources en entrée / Sink en sortie.
![Page 13: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/13.jpg)
Concept - Pipelines
“ensemble des opérations qui lis les données, les transforme et qui écris les résultats”
Possibilité de créer plusieurs Pipelines mais pas d’interaction entre.
Runner Cloud Dataflow Service ou autre.
![Page 14: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/14.jpg)
Concept - PCollections
“represents a very large data set in the cloud”
immutable pas de ramdom accessUniquement dans le pipelines
![Page 15: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/15.jpg)
Concept - PCollections
Bounded
Unbounded
![Page 16: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/16.jpg)
Transform
ParDo GroupByKey
Combine Flatten
Transform
![Page 17: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/17.jpg)
Transform - ParDo (“Parallel Do”)
LowerCase Filter
Data, Sfeir, Cloud, ...
data, sfeir, cloud, ...
Data, Sfeir, Cloud, ...
Sfeir, Cloud, ...
![Page 18: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/18.jpg)
Transform - ParDo (“Parallel Do”)
ExplodePrefixes KeyByFirstLetter
Data, Sfeir, Cloud, ...
d, da, dat, data, s, sf, sfe, sfei, sfeir, c, cl, clo, clou, cloud, ...
Data, Sfeir, Cloud, Sync ...
<d, Data>, <s, Sfeir>, <c, Cloud>, <s, Sync>...
![Page 19: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/19.jpg)
Transform - GroupByKey
GroupByKey
<d, {Data}>, <s, { Sfeir, Sync}>, <c, {Cloud}>
<d, Data>, <s, Sfeir>, <c, Cloud>, <s, Sync>...
![Page 20: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/20.jpg)
Transform - Combine
Combine.perKey(CountFn())
GroupByKey
<d, Data>, <s, Sfeir>, <c, Cloud>, <s, Sync>...
<d, {Data}>, <s, { Sfeir, Sync}>, <c, {Cloud}>
CountByKey
<d, 1>, <s, 2>, <c, 1>
<d, Data>, <s, Sfeir>, <c, Cloud>, <s, Sync>...
<d, 1>, <s, 2>, <c, 1>
![Page 21: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/21.jpg)
Source / Sink
![Page 22: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/22.jpg)
Exemple
splitwords
Count
Format
![Page 23: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/23.jpg)
Exemple
splitwords
Count
Format TopAndBottom
![Page 24: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/24.jpg)
![Page 25: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/25.jpg)
Windowing
Combine
GroupByKey
DataSet limité
![Page 26: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/26.jpg)
Windowing
9:00 9:209:10 9:409:30
![Page 27: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/27.jpg)
Windowing - Fixed
9:00 9:209:10 9:30 9:40
Défini le temps de la Window
Time
![Page 28: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/28.jpg)
Windowing - Sliding
9:00 9:209:10 9:30 9:40
Défini le temps de la Window et la slide period
Time
Period
![Page 29: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/29.jpg)
Windowing - Session
9:00 9:209:10 9:30 9:40
Défini le temps sans élement
![Page 30: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/30.jpg)
Windowing
On joue avec le temps
Event Time Processing Time
![Page 31: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/31.jpg)
Windowing - Watermark
9:00 9:209:10 9:30 9:40
Gérer le décalage entre le time event et le processing time
Event Time
Processing Time
1
42
3
1
234
5
5
![Page 32: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/32.jpg)
Windowing - Watermark
9:00 9:209:10 9:30 9:40
Event Time
Processing Time
1
42
3
1
234
5
5
Le Watermark va permettre de prendre en compte la donnée 2 mais la donnée 5 sera considéré comme une donnée en retard (data late)On peut ajouter une gestion des data late au Watermark
![Page 33: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/33.jpg)
Trigger
Aider à gérer les late data / Récupérer des informations sur les aggrégations en cours
3 types :
Time basedData drivenCombined
![Page 34: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/34.jpg)
![Page 35: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/35.jpg)
WordCount BigQuery + TOP & MIN value
![Page 36: Présentation Google Dataflow](https://reader035.vdocuments.pub/reader035/viewer/2022070523/58eda40f1a28ab571e8b4703/html5/thumbnails/36.jpg)
Link
DataFlow Model http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf
Video Frances Perry : https://www.youtube.com/watch?v=3UfZN59Nsk8
Dataflow GCP : https://cloud.google.com/dataflow/