Corporate · onsite · online training worldwide
contact@DevOpsSchool.com· +91 99057 40781·
> Data Engineering · DevOpsSchool Trainer

Scala Trainer

Private corporate batches, live online cohorts and 1-on-1 mentoring in the language of Spark, Kafka Streams and Flink — typed functional programming for data pipelines at scale — taught by a practitioner who runs it in production.

20 years across DevOps, SRE and Security · 10,000+ engineers trained · Trained teams at JPMorgan Chase, Verizon, Nokia and the World Bank

DeliveryOnline · Onsite · Hybrid
FormatsCorporate · 1-on-1 · Cohort
AgendaCustomisable
Batch size8–30 engineers
Engineers we've trained work at
JPMorgan ChaseBank of AmericaWells FargoVerizonNokiaWorld BankGE HealthcareVMwareOracleQualcommMercedes-BenzAirbusDatadogSplunkDeloitteInfosysWiproCapgemini
# who teaches it

Your Scala trainer

Rajesh Kumar

Principal DevOps Engineer & Architect

Early-bird MLOpsAIOps practitionerData platform operations20 years in productionPrincipal / architect roles10,000+ engineers trainedM.Tech BITS Pilani25+ certifications

Rajesh teaches Scala for engineers who arrive through data rather than through type theory: the object and functional models together, case classes and sealed traits as schema, pattern matching that the compiler proves exhaustive, and Option, Either and Try so error paths are handled instead of discovered in production. Sessions move from the collections vocabulary into Spark itself — typed Datasets against untyped DataFrames, encoders, partitioning, shuffle behaviour and reading a physical query plan — then into sbt builds, ScalaTest and property-based testing, futures and typed actors for streaming, and packaging a JVM job so it deploys the same way from a laptop as from a scheduler.

Twenty years across DevOps, SRE and Security, in principal and architect roles at PayPay, SoftwareAG, ServiceNow, JDA Software, Intuit, Adobe and others. He has trained engineers at JPMorgan Chase, Verizon, Nokia, the World Bank, VMware, Oracle, Mercedes-Benz and Airbus — more than 10,000 people personally. He teaches what he runs, not what he reads.

One practitioner, not a bench

You are booked with a named engineer, and that is who turns up. Marketplaces and larger providers rotate whoever is free, so the person who sold you the agenda is rarely the person teaching it.

The same trainer is available for the next engagement, which matters when a team builds on what it learned last time.

18,000+certified learners
500+corporate batches delivered
50+countries served
100+certification programmes
# faculty

Who delivers Scala engagements

Your batch is assigned a named trainer before it starts, and that is who teaches it. See the full faculty.

How your Scala trainer is chosen

Engagements are matched on the tool, not the calendar. For Scala that means a trainer who has run it in production — the language of Spark, Kafka Streams and Flink — typed functional programming for data pipelines at scale — rather than whoever is free that week. You are told who is teaching before you commit, and that person is on the discovery call that shapes the agenda.

Where a batch is large enough to need a second trainer, the pairing is declared up front. The lead trainer stays accountable for the syllabus and the assessment either way.

Rajesh Kumar

Principal DevOps Engineer & Architect

India20 yrsLead trainer

Twenty years across DevOps, SRE and Security in principal and architect roles at PayPay, SoftwareAG, ServiceNow, JDA Software, Intuit, Adobe, IBM/Emptoris, Ness, MindTree and Accenture. He has trained more than 10,000 engineers personally, at organisations including JPMorgan Chase, Verizon, Nokia, the World Bank, VMware, Oracle, Mercedes-Benz and Airbus. He teaches what he runs, not what he reads.

Nikhil Gupta

IndiaInstructorCoach

Pranab Kumar

IndiaInstructorCoach

Rohit Ghatol

IndiaInstructorCoach

Amit Agarwal

IndiaInstructorCoach

Anil Kumar

IndiaInstructorCoach

Balachandran Anbalagan

IndiaInstructorCoach

Durga Prasad

IndiaInstructorCoach

Gaurav Aggarwal

IndiaInstructorCoach

Harsh Mehta

IndiaInstructorCoach

Kapil Gupta

IndiaInstructorCoach

Kunal Jain

IndiaInstructorCoach

# how to engage

Four ways to work with this trainer

Private corporate batch

Teams of 8–30

Custom agenda, your timezone, onsite or online, NDA-friendly.

Request a quote

1-on-1 mentoring

Individual engineers

A private instructor and a curriculum built around your goal.

₹99,999

Live & Interactive cohort

Individuals who want peers

Scheduled batch, max 8 to 10 hours of live instruction.

₹34,999

Self-paced video

Self-starters

Full LMS access — 20+ courses and 50+ tools included.

₹833/mo
# private batches

Private Scala training for your team

A private batch starts with a discovery call. We look at the stack you actually run — the CI system, the cloud, the constraints — and map the agenda onto it, so examples use your topology rather than a generic one.

Delivery is onsite at your premises, live online, or hybrid, scheduled around your release calendar rather than ours. Batches run 8 to 30 engineers.

Every attendee leaves with recordings, slides, lab repositories and a completion certificate. You receive an attendance and assessment report. Invoicing supports PO and GST.

Talk to us about a private Scala batch

What you provide vs what we bring

  • You: the room or the call, and the engineers
  • Us: trainer, agenda, labs, assessment, certificates
  • Labs: we guide your team through provisioning their own free-tier cloud environment — the skill goes with them
# the technology

What is Scala?

Scala is a statically typed language on the JVM that combines object-oriented and functional programming in one type system. Everything is an expression, values are immutable by default, functions are values that can be passed and returned, and pattern matching over algebraic data types replaces long chains of conditionals. It interoperates directly with Java, so an existing JVM estate — libraries, build tooling, monitoring, JVM tuning knowledge — carries straight across.

Scala's centre of gravity is data engineering. Apache Spark is written in Scala and its Scala API is the one that exposes the engine most directly: typed Datasets that catch a bad column name at compile time rather than in hour three of a job, custom encoders, user-defined aggregate functions, and access to internals that the Python API wraps. Kafka Streams, Apache Flink, Akka and Pekko, Delta Lake and much of the surrounding lakehouse tooling are all JVM-native, and a Scala engineer can read and extend them rather than treating them as a black box.

The language features that matter in that context are concrete rather than academic. Case classes and sealed traits model a schema precisely and make pattern matching exhaustive. Option, Either and Try force error paths to be handled instead of discovered in production. Immutable collections with map, flatMap, fold and groupBy give the same vocabulary that distributed transformations use, so local code and cluster code look alike. Implicits and given instances power the type classes that Spark encoders and JSON libraries are built from. And futures, effects and typed actors give principled models for the concurrency that streaming systems demand.

Why this skill matters now

Data platforms consolidated on the JVM. Spark remains the default distributed processing engine, Kafka is the default event backbone, and Flink is the default choice for genuinely low-latency stream processing — all three are JVM systems with Scala or Java as their native language. Teams that operate them at scale eventually need engineers who can work inside them, not only call them.

The practical trigger is usually performance or correctness. A PySpark pipeline that works fine at ten gigabytes falls over at ten terabytes, and the fix is understanding partitioning, serialisation, shuffles and the query plan — which is much easier from the language the engine is written in. Or a schema change silently corrupts a job for a week because a DataFrame had no compile-time column checking, and the team moves to typed Datasets. Or a Kafka Streams topology needs a custom serde and a custom state store, and there is no Python option at all.

Scala is also where the functional discipline is learned properly. Immutability, exhaustive pattern matching and total functions are not stylistic preferences in distributed systems; they are how you stop a job producing a different answer on retry. Engineers who learn Scala for Spark generally take those habits back into every other language they write.

Scala training
# outcomes

What your team can do afterwards

Write idiomatic Scala using immutable values, expressions and higher-order functions rather than transliterated Java
Model domain and schema precisely with case classes, sealed traits and exhaustive pattern matching
Handle absence and failure with Option, Either and Try instead of nulls and unchecked exceptions
Use the collections library fluently — map, flatMap, fold, groupBy — and understand strict versus lazy evaluation
Build Spark jobs with typed Datasets, custom encoders and user-defined functions, and read a physical query plan
Diagnose Spark performance problems: skew, shuffle volume, partitioning, caching and serialisation cost
Build stream processing with Kafka Streams or Flink, including custom serdes, state and windowing
Structure, test and package a production Scala project with sbt, ScalaTest, property-based tests and an assembly artefact
# curriculum

8 modules. Live demos in a real lab, not slides.

01Scala on the JVM and the toolchainLive & Interactive5 hrs · 2 assignments · 1 capstone

Getting productive before getting theoretical. Where Scala sits relative to Java and Python for data work, installing a toolchain, the sbt build model, the REPL and worksheets, and the Scala 2 versus Scala 3 question that every team has to answer.

Topics: Scala's position in the data ecosystem: Spark, Kafka Streams, Flink · JVM interoperability and reusing existing Java libraries · Installing Scala, JDK selection and version management · sbt project layout, build definition and dependency syntax · The REPL, scala-cli and worksheets for exploration · Scala 2 versus Scala 3: syntax, migration and Spark support · IDE setup and the compiler feedback loop

  • Assignments: (1) Create an sbt project with a dependency and a runnable main class; (2) Call a Java library from Scala and handle the type mismatches it produces
  • Capstone: Deliver a reproducible project skeleton your team could start every new job from
02Values, expressions and functionsLive & Interactive5 hrs · 2 assignments · 1 capstone

The core language, taught around immutability. val versus var and why the default matters in a distributed system, everything-is-an-expression, the type system and inference, methods versus functions, and higher-order functions as the basic unit of composition.

Topics: val, var, lazy val and immutability by default · Expressions rather than statements: if, match and blocks return values · The type hierarchy: Any, AnyVal, AnyRef, Nothing, Unit · Type inference and when to annotate anyway · Methods, functions, and function literals · Higher-order functions, currying and partial application · Default and named arguments, varargs · String interpolation and formatting

  • Assignments: (1) Rewrite an imperative loop-and-mutate routine as a pure expression; (2) Write a higher-order function that composes two transformations and prove it type-checks
  • Capstone: Convert a mutable data-processing routine into an immutable, expression-based implementation with identical output
03Modelling data: classes, case classes and pattern matchingLive & Interactive5 hrs · 2 assignments · 1 capstone

How a Scala engineer describes a schema. Classes, objects and companions, case classes with their generated equality and copy, sealed traits as closed hierarchies, and pattern matching the compiler can prove exhaustive — the combination that stops an unhandled record type reaching production.

Topics: Classes, constructors, objects and companion objects · Case classes: equality, copy, apply and unapply · Traits, mixins and the linearisation rules · Sealed traits and algebraic data types · Pattern matching on values, types, constructors and guards · Exhaustivity checking and why it prevents real defects · Extractors and custom unapply · Enums and opaque types in Scala 3

  • Assignments: (1) Model a real event schema as a sealed trait hierarchy of case classes; (2) Write a match that the compiler proves exhaustive, then break it by adding a subtype
  • Capstone: Deliver a fully typed domain model for a real dataset, with exhaustive handling of every variant
04Collections, error handling and functional compositionLive & Interactive5 hrs · 2 assignments · 1 capstone

The vocabulary that Spark transformations mirror. Immutable collections and their operations, strict versus lazy views, and then the functional error model — Option, Either and Try — composed with map, flatMap and for-comprehensions so failure paths are explicit rather than implicit.

Topics: List, Vector, Map, Set and choosing between them · map, flatMap, filter, fold, reduce, groupBy, zip · Views, streams and lazy evaluation · Option: eliminating null from the domain · Either for typed errors and Try for exception capture · for-comprehensions as flatMap chains · Traversing collections of effects · Recursion, tail recursion and stack safety

  • Assignments: (1) Parse a dirty CSV into typed records with every failure captured in an Either; (2) Rewrite nested null checks as a for-comprehension over Options
  • Capstone: Build a validation pipeline that accumulates every error in a record rather than failing on the first
05Implicits, given instances and type classesLive & Interactive5 hrs · 2 assignments · 1 capstone

The mechanism behind Spark encoders, JSON codecs and most library ergonomics in Scala. Implicit parameters and conversions in Scala 2, given and using in Scala 3, context bounds, type classes, and how to use all of it without producing code nobody else can read.

Topics: Implicit parameters and implicit resolution scope · given and using in Scala 3 · Extension methods and enriching existing types · Type classes: definition, instances and derivation · Context bounds and Ordering, Numeric, Encoder · Implicit conversions and why they are dangerous · How Spark encoders are resolved · Debugging an implicit-not-found error

  • Assignments: (1) Define a type class with instances for three types and dispatch on it generically; (2) Diagnose and fix a missing-encoder error in a Spark Dataset job
  • Capstone: Build a small type-class-based serialisation layer and explain how Spark's encoder resolution mirrors it
06Spark with ScalaLive & Interactive5 hrs · 2 assignments · 1 capstone

The main reason most teams book this course. RDDs, DataFrames and typed Datasets and when each is correct; Catalyst and Tungsten; reading a physical plan; and the performance work that separates a job that runs from a job that finishes — partitioning, shuffle, skew, broadcast joins and caching.

Topics: SparkSession, RDDs, DataFrames and typed Datasets compared · Schemas, encoders and compile-time column safety · Transformations, actions and lazy evaluation · Catalyst optimiser and reading explain output · Partitioning, repartition versus coalesce · Shuffles, skew and salting strategies · Broadcast joins and join strategy selection · UDFs, typed aggregators and when to avoid them · Caching, persistence levels and memory management · Structured Streaming: sources, sinks, watermarks and output modes

  • Assignments: (1) Convert an untyped DataFrame job to typed Datasets and catch a schema defect at compile time; (2) Take a job with a skewed join and reduce its runtime with a documented change
  • Capstone: Deliver a tuned Spark job with an explained physical plan and a measured before-and-after runtime
07Concurrency, streaming and the JVM data toolchainLive & Interactive5 hrs · 2 assignments · 1 capstone

Beyond batch. Futures and execution contexts, the actor model with Akka or Pekko typed actors, Kafka producers, consumers and Streams topologies with custom serdes and state stores, and Flink for genuinely low-latency processing.

Topics: Futures, execution contexts and composing asynchronous work · Blocking, thread pools and the failure modes of getting it wrong · Typed actors, supervision and message protocols · Kafka producers and consumers from Scala · Kafka Streams topologies, custom serdes and state stores · Exactly-once semantics and what it does and does not guarantee · Flink DataStream basics: windows, state and checkpointing · Choosing between Structured Streaming, Kafka Streams and Flink

  • Assignments: (1) Build a Kafka Streams topology with a custom serde over a case class schema; (2) Compose three asynchronous calls with Futures and handle partial failure correctly
  • Capstone: Deliver a stateful streaming application with windowing, custom serialisation and recovery after restart
08Testing, build and production deliveryLive & Interactive5 hrs · 2 assignments · 1 capstone

Making it shippable. ScalaTest and property-based testing, testing Spark jobs without a cluster, sbt multi-project builds, assembly and shading, dependency and Scala version conflicts, and deploying a job so it runs the same from a laptop and from a scheduler.

Topics: ScalaTest styles, matchers and structuring a suite · Property-based testing with ScalaCheck · Testing Spark transformations with a local session · Test fixtures for streaming and stateful code · sbt multi-project builds and shared settings · Assembly, shading and dependency conflicts · Scala binary version compatibility and Spark's constraints · Packaging, spark-submit, cluster modes and configuration · Logging, metrics and diagnosing a failed job from its history server

  • Assignments: (1) Write property-based tests for a transformation and find an edge case the example tests missed; (2) Resolve a real dependency conflict with shading and prove the artefact runs
  • Capstone: Deliver a tested, assembled Spark or streaming job with CI, configuration management and a documented deployment

Need this mapped to your stack?

We rebuild the agenda around the tools you actually run.

Request a custom agenda
# hands-on

Labs and capstones your engineers actually build

LAB · TYPES

Schema the compiler enforces

Model a real event schema as sealed traits and case classes, then break it deliberately and watch exhaustivity checking find every unhandled path.

case classessealed traitspattern matching
LAB · ERRORS

Parse dirty data without exceptions

Turn a malformed CSV into typed records where every failure is captured in an Either and accumulated rather than thrown away.

optioneithervalidation
LAB · SPARK

DataFrame to typed Dataset

Convert an untyped Spark job to typed Datasets, catch a schema defect at compile time that previously failed in hour three of the run.

sparkdatasetsencoders
LAB · PERFORMANCE

Kill the skew

Profile a Spark job with a badly skewed join, read the physical plan, apply a documented fix and measure the runtime difference.

shuffleskewexplain
LAB · STREAMING

Stateful topology that survives restart

Build a Kafka Streams application with a custom serde, windowed aggregation and a state store, then restart it mid-stream and verify recovery.

kafka streamsserdestate
CAPSTONE · DELIVERY

Job that ships

Package a tested Spark job as an assembled artefact with resolved dependency conflicts, CI, external configuration and a documented deployment path.

sbtassemblyci
# ecosystem

The tools Scala sits next to

Apache Spark
Apache Kafka
Apache Flink
sbt
ScalaTest
Akka
Delta Lake
Hadoop
Databricks
Docker
Git
Jenkins

Who this is for

  • Data engineers building and tuning Spark pipelines who currently use only the Python API
  • Java developers moving into data engineering or streaming systems
  • Backend engineers adopting functional programming and typed domain modelling
  • Streaming engineers working with Kafka Streams, Flink or Structured Streaming
  • Platform engineers who operate JVM data infrastructure and need to read what it runs
  • Analytics engineers moving from SQL-only work into programmatic pipelines

Pre-requisites

  • Programming experience in any language — ideally Java, Python or another statically typed language
  • Basic understanding of the JVM: classpath, JAR files and heap settings
  • Comfortable on a command line and with a build tool such as Maven, Gradle or npm
  • Familiarity with SQL and relational thinking, since most Spark work maps onto it
  • A machine or free-tier cloud instance able to run a JDK, sbt and a local Spark session
# pricing

Straightforward pricing

Every plan includes 1 year of full LMS access — not just this course, the entire DevOpsSchool LMS: 20+ courses, 50+ tools, videos, quizzes, assignments and projects.

Self-paced video

₹833/mo

Billed yearly at ₹9,996

Enroll now

1-on-1 mentorship

₹99,999

Full program, private instructor

Enroll 1-on-1

Corporate / private batch

8–30 engineers · custom agenda · onsite or online · PO and GST invoicing

Get a custom quote

Refunds. If we cancel or postpone a cohort, you get a full refund within 15 days. There is no money-back guarantee otherwise.

Terms. Course material remains licensed to the attendee. Read the terms.

Your data. We don't share it with third parties. Privacy policy.

Every attendee gets a verifiable certificate

  • Issued per attendee on completion
  • Verifiable at devopsschool.com/certificates
  • Hard copy available on request
  • Corporate batches receive an attendance and assessment report
DevOpsSchool

Scala Training

Certificate of completion

# feedback

What engineers say

4.4 / 5 from 26 reviews on Trustpilot.

★★★★★
Great learning experience from a very knowledgeable instructor with well-prepared course notes. The lab exercises on AWS instance work well to learn the hands-on side of the course.
Ando Gg · Trustpilot
★★★★★
Rajesh is a very good trainer I have experienced in DevSecOps training. The number of contents in different topics he has posted on the DevOpsSchool public website are amazing and user friendly for beginners and experienced professionals.
Ashutosh Mishra · Trustpilot
★★★★★
The trainer (Rajesh) provided very good sessions on SRE profession. Not only hands-on learning on the tools but also SRE mindset.
Peter Wang · Trustpilot
★★★★★
Very good training session. Well explained from the basics to the complex concepts. Also tried to cover practicals and demos within the 3 hour sessions. The learning content and videos are of a great deal of help.
Sreekanth Kannoth · Trustpilot
★★★★★
Basics explanation was exemplary from Rajesh where he dealt with complicated topics to be simple. Great learning stuff personally for me.
Krishna Mohan Yelleti · Trustpilot
★★★★★
Very detailed explanation and has lots of patience in attending the questionnaire. Thanks again for your wonderful sessions.
Uttam Samudrala · Trustpilot
# comparison

Why a named practitioner beats a marketplace listing

What mattersYouTube + blogsGeneric online courseFreelance marketplaceDevOpsSchool
Named practitionerNoRarelyVaries per bookingYes — same trainer each time
Production experienceUnknownUnknownUnverified20 years, named employers
Custom agendaNoNoSometimesBuilt from your stack
Onsite deliveryNoNoSometimesYes
Lab environmentNoneSandbox that expiresVariesYour own cloud — skill goes with you
AssessmentNoneQuizRarelyAssignments + capstone per module
Per-attendee certificatesNoSometimesRarelyYes
Corporate invoicingNoLimitedVariesPO and GST
Post-training supportNoneForum, time-limitedNoneLifetime forum access
# questions

Frequently asked

We use PySpark. Is Scala worth the switch?
Not always, and the course is honest about that. Scala pays off when you need typed Datasets for schema safety, custom encoders or aggregators, JVM-level performance work, or Kafka Streams and Flink where there is no comparable Python option. For straightforward DataFrame ETL, PySpark is fine.
Scala 2 or Scala 3?
We teach current syntax and call out the differences explicitly, because Spark's supported Scala version often lags. If your platform pins Scala 2.12 or 2.13 we teach against that and show what changes on migration — given/using, enums, new syntax and the compatibility rules.
How much functional programming theory is there?
Only what earns its place. Immutability, higher-order functions, Option and Either, type classes and pattern matching are taught because they prevent real defects in distributed jobs. Category theory vocabulary is not a goal; working code is.
Can the agenda be customised for our stack?
Yes — that is the normal case for a private batch. We start with a discovery call, look at whether you are Spark-heavy, Kafka-heavy or Flink-heavy, which platform you run on, and rebuild the module weighting around it.
Do you cover Databricks specifically?
The Spark modules apply directly, and a private batch can add Databricks specifics — notebooks, cluster configuration, Delta Lake, Unity Catalog and job orchestration — in place of generic cluster deployment.
Is Spark included or is this only the language?
Spark is a full module plus a large share of the labs, because it is why most teams book Scala training. If your team already knows Spark well, that module can be replaced with deeper streaming, effects or library design content.
Do you deliver onsite?
Yes. Private batches run onsite at your premises, live online, or hybrid. You provide the room and the engineers; we bring the trainer, agenda, labs, assessment and certificates.
How long does a private Scala batch take?
Typically four to five days. The language core takes two days, Spark and performance work another one to two, and streaming, testing and delivery close it out. Teams with no JVM background should plan for five.
What lab environment do we need?
Attendees provision their own environment — a JDK, sbt and a local Spark installation, or a free-tier cloud instance — and we walk them through it. We deliberately do not hand out temporary sandboxes, because the environment they build is the one they keep.
What size are batches?
Private corporate batches run 8 to 30 engineers. Public Live & Interactive cohorts are capped at 10 so everyone gets time with the trainer.
Do attendees get a certificate?
Yes — every attendee receives a completion certificate, verifiable at devopsschool.com/certificates. Corporate batches also receive an attendance and assessment report.
What is your refund position?
If we cancel or postpone a cohort, you receive a full refund within 15 days. There is no general money-back guarantee, and GST and gateway fees are not refunded.

Still deciding?

Tell us the team, the stack and the timeline. You'll get a straight answer, not a sales sequence.

Talk to an advisor
# ready when you are

Book a Scala trainer — or ask a question first.

  • No spam, no drip sequence
  • Syllabus in 60 seconds
  • A human reply within one business day

Prefer to call or email?

More ways to reach us on the contact page.

Talk to an advisorRequest a quote