SlideShare a Scribd company logo
1 of 90
Download to read offline
Beam Me Up:
Voyaging Into Big Data
Michele Titolo
Senior Software Engineer, Square
@micheletitolo
@micheletitolo
Big Data Is All
Around Us
@micheletitolo
Apache Beam Is One
Of The Available
Tools
@micheletitolo
@micheletitolo
Benefits At Square
@micheletitolo
24x
Faster
10x
Uploads
<$100
Backfill
@micheletitolo
‣ What is Beam
‣ How to build a pipeline
‣ Tips and Gotchas
What We Will Cover
What Is Beam
@micheletitolo
Abstraction
@micheletitolo
Built For Parallelism
@micheletitolo
Time
1
2
3
Time
1
2
3
@micheletitolo
Highly Scalable
@micheletitolo
Sits On Top Of Or
Adjacent To Other
Tools
@micheletitolo
Portable
BIG
Not Just for
Data
Building Beam Pipelines
@micheletitolo
Runners
Pipeline Code
@micheletitolo
Runners
Pipeline Code
@micheletitolo
Executor.
Don’t Build Yourself
@micheletitolo
@micheletitolo
@micheletitolo
https://beam.apache.org/documentation/runners/capability-matrix/
@micheletitolo
1 2 3
@micheletitolo
1 2 3
0 0> 1
@micheletitolo
1 2 3
> 1
@micheletitolo
1 2 3
> 1
@micheletitolo
Deployment
https://beam.apache.org/documentation/runners/capability-matrix/
@micheletitolo
Runners
Pipeline Code
@micheletitolo
Pipelines Are Defined
Solely In Code
@micheletitolo
Java, Python, Go
@micheletitolo
No Explicit
Dependency Graph
@micheletitolo
Create A Pipeline
Object
@micheletitolo
Initial Data
https://beam.apache.org/documentation/io/built-in/
@micheletitolo
Use A Small Dataset To
Test
@micheletitolo
Run And Test Locally
@micheletitolo
Collections and
Transformations
@micheletitolo
PCollection
DoFn & PTransform
@micheletitolo
PCollections Are Kind
Of Like Arrays
@micheletitolo
Must Be Uniform
@micheletitolo
Transformations
Applied To Entire
PCollection
@micheletitolo
Contents
@micheletitolo
Inputs And Outputs
Must Serialize To Disk
@micheletitolo
KV: one key hash
@micheletitolo
Composite Objects
@micheletitolo
GroupByKey
:{ }
@micheletitolo
CoGroupByKey
:
{ }{
}
A
B
:
:
@micheletitolo
DoFn & PTransform
@micheletitolo
Most Of The Code Is In
These
@micheletitolo
DoFn
@micheletitolo
Process PCollection 1
Element at a Time
@micheletitolo
PTransform
@micheletitolo
Single Input And
Output Type
@micheletitolo
Side Inputs
@micheletitolo
Built In
Transformations
@micheletitolo
Flatten, Combine,
Partition
@micheletitolo
Statistics: Count, Mean,
Max Etc
@micheletitolo
Metrics
@micheletitolo
Outputs
@micheletitolo
1 2 3
PCollection
DoFn
PCollection PCollection
PCollection
Pipeline
https://beam.apache.org/get-started/wordcount-example/
DoFn DoFn
Tips And Gotchas
@micheletitolo
Input
@micheletitolo
Input
worker 1 worker 2
@micheletitolo
Input
workerworker workerworkerworker workerworkerworker worker
@micheletitolo
Input
worker
@micheletitolo
Keep
Transformations
Small And Simple
@micheletitolo
A B C3
B C2
Time
A B C1
A
@micheletitolo
3
B C2
Time
A B C1
A
RESHUFFLE
D E F
@micheletitolo
Smaller -> Resilient
@micheletitolo
Input
@micheletitolo
Input
@micheletitolo
Something
WILL PROBABLY
GO
WRONG
1 2 3
1 2 3
1 2
@micheletitolo
No Dead Letter
Queue
@micheletitolo
:
:
{ }{
}
:
@micheletitolo
:
{ }
:
{ }:
{ }
:
{ } :
{ }
Partition
:
{ }{ }: :
{ }{ }:
:
{ }{ }:
:
{ }{ }:
:
{ }{ }:
@micheletitolo
Idempotency
@micheletitolo
Intermediate State
Goes Away After
Finish
@micheletitolo
@micheletitolo
Api Ratelimits
@micheletitolo
Multiple Of The
Same Pipeline Can
Be Running
In Summary
@micheletitolo
Beam Is A General
Purpose Tool
@micheletitolo
Adaptable To Many
Scenarios
@micheletitolo
Easy To Get Started
@micheletitolo
Significantly
Improved Some ETLs
@micheletitolo
Questions?
• https://unsplash.com/photos/MShiKyjGhck
• https://unsplash.com/photos/DByY8MbE9OE
• https://unsplash.com/photos/fR47SivxkSM
• https://unsplash.com/photos/m3TYLFI_mDo
Photo Credits

More Related Content

Similar to Beam Me Up: Voyaging into Big Data

Web service persino nei sistemi embedeed
Web service persino nei sistemi embedeedWeb service persino nei sistemi embedeed
Web service persino nei sistemi embedeedAntonio Cafiero
 
OBS4DX - Il ruolo dell’object storage nel percorso verso la Digital Transform...
OBS4DX - Il ruolo dell’object storage nel percorso verso la Digital Transform...OBS4DX - Il ruolo dell’object storage nel percorso verso la Digital Transform...
OBS4DX - Il ruolo dell’object storage nel percorso verso la Digital Transform...Sergio Patano
 
Poliglottismo tecnologico & innovazione: un matrimonio perfetto? Esperienze d...
Poliglottismo tecnologico & innovazione: un matrimonio perfetto? Esperienze d...Poliglottismo tecnologico & innovazione: un matrimonio perfetto? Esperienze d...
Poliglottismo tecnologico & innovazione: un matrimonio perfetto? Esperienze d...Data Driven Innovation
 
Piano Didattico Personalizzato on-line (PDP on-line)
Piano Didattico Personalizzato on-line (PDP on-line)Piano Didattico Personalizzato on-line (PDP on-line)
Piano Didattico Personalizzato on-line (PDP on-line)Michele Maffucci
 
Siti web, portali e Rich Internet Applications: tendenze e controtendenze
Siti web, portali e Rich Internet Applications: tendenze e controtendenzeSiti web, portali e Rich Internet Applications: tendenze e controtendenze
Siti web, portali e Rich Internet Applications: tendenze e controtendenzeDiego La Monica
 
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023AndreaStagi3
 
Editoria in the Cloud
Editoria in the CloudEditoria in the Cloud
Editoria in the CloudENTER S.r.l.
 
Modernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesGiulio Roggero
 
Introduzione all'Agile Software Development
Introduzione all'Agile Software DevelopmentIntroduzione all'Agile Software Development
Introduzione all'Agile Software DevelopmentPaolo Sammicheli
 
Elk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explainedElk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explainedFederico Panini
 
Introduzione all'Agile Software Development
Introduzione all'Agile Software DevelopmentIntroduzione all'Agile Software Development
Introduzione all'Agile Software DevelopmentPaolo Sammicheli
 
Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!Francesco Sciuti
 
Exploring the New IT
Exploring the New ITExploring the New IT
Exploring the New ITIDC Italy
 
É ora di passare a Pipeline as code
É ora di passare a Pipeline as codeÉ ora di passare a Pipeline as code
É ora di passare a Pipeline as codeMatteo Emili
 
Mariano Cunietti: “Mamma, ho fatto il botto!” Dal minimarket al superstore in...
Mariano Cunietti: “Mamma, ho fatto il botto!” Dal minimarket al superstore in...Mariano Cunietti: “Mamma, ho fatto il botto!” Dal minimarket al superstore in...
Mariano Cunietti: “Mamma, ho fatto il botto!” Dal minimarket al superstore in...Meet Magento Italy
 

Similar to Beam Me Up: Voyaging into Big Data (20)

Web service persino nei sistemi embedeed
Web service persino nei sistemi embedeedWeb service persino nei sistemi embedeed
Web service persino nei sistemi embedeed
 
Presentazione
PresentazionePresentazione
Presentazione
 
OBS4DX - Il ruolo dell’object storage nel percorso verso la Digital Transform...
OBS4DX - Il ruolo dell’object storage nel percorso verso la Digital Transform...OBS4DX - Il ruolo dell’object storage nel percorso verso la Digital Transform...
OBS4DX - Il ruolo dell’object storage nel percorso verso la Digital Transform...
 
Web2.0
Web2.0Web2.0
Web2.0
 
Poliglottismo tecnologico & innovazione: un matrimonio perfetto? Esperienze d...
Poliglottismo tecnologico & innovazione: un matrimonio perfetto? Esperienze d...Poliglottismo tecnologico & innovazione: un matrimonio perfetto? Esperienze d...
Poliglottismo tecnologico & innovazione: un matrimonio perfetto? Esperienze d...
 
Piano Didattico Personalizzato on-line (PDP on-line)
Piano Didattico Personalizzato on-line (PDP on-line)Piano Didattico Personalizzato on-line (PDP on-line)
Piano Didattico Personalizzato on-line (PDP on-line)
 
Siti web, portali e Rich Internet Applications: tendenze e controtendenze
Siti web, portali e Rich Internet Applications: tendenze e controtendenzeSiti web, portali e Rich Internet Applications: tendenze e controtendenze
Siti web, portali e Rich Internet Applications: tendenze e controtendenze
 
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
Angular kit e Design system del Paese - Meetup ngRome 30 Gennaio 2023
 
Editoria in the Cloud
Editoria in the CloudEditoria in the Cloud
Editoria in the Cloud
 
Modernize Legacy Systems with Kubernetes
Modernize Legacy Systems with KubernetesModernize Legacy Systems with Kubernetes
Modernize Legacy Systems with Kubernetes
 
Introduzione all'Agile Software Development
Introduzione all'Agile Software DevelopmentIntroduzione all'Agile Software Development
Introduzione all'Agile Software Development
 
Elk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explainedElk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explained
 
Cloud e big data
Cloud e big dataCloud e big data
Cloud e big data
 
Introduzione all'Agile Software Development
Introduzione all'Agile Software DevelopmentIntroduzione all'Agile Software Development
Introduzione all'Agile Software Development
 
Smau Nanosoft
Smau NanosoftSmau Nanosoft
Smau Nanosoft
 
Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!
 
Exploring the New IT
Exploring the New ITExploring the New IT
Exploring the New IT
 
É ora di passare a Pipeline as code
É ora di passare a Pipeline as codeÉ ora di passare a Pipeline as code
É ora di passare a Pipeline as code
 
Mariano Cunietti: “Mamma, ho fatto il botto!” Dal minimarket al superstore in...
Mariano Cunietti: “Mamma, ho fatto il botto!” Dal minimarket al superstore in...Mariano Cunietti: “Mamma, ho fatto il botto!” Dal minimarket al superstore in...
Mariano Cunietti: “Mamma, ho fatto il botto!” Dal minimarket al superstore in...
 
Evoluzione del web
Evoluzione del webEvoluzione del web
Evoluzione del web
 

More from Michele Titolo

Writing Design Docs for Wide Audiences
Writing Design Docs for Wide AudiencesWriting Design Docs for Wide Audiences
Writing Design Docs for Wide AudiencesMichele Titolo
 
APIs: The Good, The Bad, The Ugly
APIs: The Good, The Bad, The UglyAPIs: The Good, The Bad, The Ugly
APIs: The Good, The Bad, The UglyMichele Titolo
 
Tackling the Big, Impossible Project
Tackling the Big, Impossible ProjectTackling the Big, Impossible Project
Tackling the Big, Impossible ProjectMichele Titolo
 
No Microservice is an Island
No Microservice is an IslandNo Microservice is an Island
No Microservice is an IslandMichele Titolo
 
More than po: Debugging in LLDB
More than po: Debugging in LLDBMore than po: Debugging in LLDB
More than po: Debugging in LLDBMichele Titolo
 
APIs for the Mobile World
APIs for the Mobile WorldAPIs for the Mobile World
APIs for the Mobile WorldMichele Titolo
 
Swift Generics in Theory and Practice
Swift Generics in Theory and PracticeSwift Generics in Theory and Practice
Swift Generics in Theory and PracticeMichele Titolo
 
Protocols promised-land-2
Protocols promised-land-2Protocols promised-land-2
Protocols promised-land-2Michele Titolo
 
Making friendly-microservices
Making friendly-microservicesMaking friendly-microservices
Making friendly-microservicesMichele Titolo
 
More Than po: Debugging in LLDB @ CocoaConf SJ 2015
More Than po: Debugging in LLDB @ CocoaConf SJ 2015More Than po: Debugging in LLDB @ CocoaConf SJ 2015
More Than po: Debugging in LLDB @ CocoaConf SJ 2015Michele Titolo
 
More than `po`: Debugging in lldb
More than `po`: Debugging in lldbMore than `po`: Debugging in lldb
More than `po`: Debugging in lldbMichele Titolo
 
Can't Handle My Scale v2
Can't Handle My Scale v2Can't Handle My Scale v2
Can't Handle My Scale v2Michele Titolo
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftMichele Titolo
 
Mastering the Project File (AltConf)
Mastering the Project File (AltConf)Mastering the Project File (AltConf)
Mastering the Project File (AltConf)Michele Titolo
 
APIs: The good, the bad, the ugly
APIs: The good, the bad, the uglyAPIs: The good, the bad, the ugly
APIs: The good, the bad, the uglyMichele Titolo
 

More from Michele Titolo (20)

Writing Design Docs for Wide Audiences
Writing Design Docs for Wide AudiencesWriting Design Docs for Wide Audiences
Writing Design Docs for Wide Audiences
 
APIs: The Good, The Bad, The Ugly
APIs: The Good, The Bad, The UglyAPIs: The Good, The Bad, The Ugly
APIs: The Good, The Bad, The Ugly
 
Tackling the Big, Impossible Project
Tackling the Big, Impossible ProjectTackling the Big, Impossible Project
Tackling the Big, Impossible Project
 
No Microservice is an Island
No Microservice is an IslandNo Microservice is an Island
No Microservice is an Island
 
More than po: Debugging in LLDB
More than po: Debugging in LLDBMore than po: Debugging in LLDB
More than po: Debugging in LLDB
 
APIs for the Mobile World
APIs for the Mobile WorldAPIs for the Mobile World
APIs for the Mobile World
 
Swift Generics in Theory and Practice
Swift Generics in Theory and PracticeSwift Generics in Theory and Practice
Swift Generics in Theory and Practice
 
Protocols promised-land-2
Protocols promised-land-2Protocols promised-land-2
Protocols promised-land-2
 
Multitasking
MultitaskingMultitasking
Multitasking
 
Making friendly-microservices
Making friendly-microservicesMaking friendly-microservices
Making friendly-microservices
 
More Than po: Debugging in LLDB @ CocoaConf SJ 2015
More Than po: Debugging in LLDB @ CocoaConf SJ 2015More Than po: Debugging in LLDB @ CocoaConf SJ 2015
More Than po: Debugging in LLDB @ CocoaConf SJ 2015
 
The Worst Code
The Worst CodeThe Worst Code
The Worst Code
 
More than `po`: Debugging in lldb
More than `po`: Debugging in lldbMore than `po`: Debugging in lldb
More than `po`: Debugging in lldb
 
Can't Handle My Scale v2
Can't Handle My Scale v2Can't Handle My Scale v2
Can't Handle My Scale v2
 
Can't Handle My Scale
Can't Handle My ScaleCan't Handle My Scale
Can't Handle My Scale
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in Swift
 
Mastering the Project File (AltConf)
Mastering the Project File (AltConf)Mastering the Project File (AltConf)
Mastering the Project File (AltConf)
 
APIs: The Ugly
APIs: The UglyAPIs: The Ugly
APIs: The Ugly
 
That's Not My Code!
That's Not My Code!That's Not My Code!
That's Not My Code!
 
APIs: The good, the bad, the ugly
APIs: The good, the bad, the uglyAPIs: The good, the bad, the ugly
APIs: The good, the bad, the ugly
 

Beam Me Up: Voyaging into Big Data