When you enroll in this course, you'll also be enrolled in this Specialization.
Learn new concepts from industry experts
Gain a foundational understanding of a subject or tool
Develop job-relevant skills with hands-on projects
Earn a shareable career certificate
There are 4 modules in this course
Manipulating big data distributed over a cluster using functional concepts is rampant in industry, and is arguably one of the first widespread industrial uses of functional ideas. This is evidenced by the popularity of MapReduce and Hadoop, and most recently Apache Spark, a fast, in-memory distributed collections framework written in Scala. In this course, we'll see how the data parallel paradigm can be extended to the distributed case, using Spark throughout. We'll cover Spark's programming model in detail, being careful to understand how and when it differs from familiar programming models, like shared-memory parallel collections or sequential Scala collections. Through hands-on examples in Spark and Scala, we'll learn when important issues related to distribution like latency and network communication should be considered and how they can be addressed effectively for improved performance.
Learning Outcomes. By the end of this course you will be able to:
- read data from persistent storage and load it into Apache Spark,
- manipulate data with Spark and Scala,
- express algorithms for data analysis in a functional style,
- recognize how to avoid shuffles and recomputation in Spark,
Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity using the command line. This course is intended to be taken after Parallel Programming: https://www.coursera.org/learn/parprog1.
Get up and running with Scala on your computer. Complete an example assignment to familiarize yourself with our unique way of submitting assignments. In this week, we'll bridge the gap between data parallelism in the shared memory scenario (learned in the Parallel Programming course, prerequisite) and the distributed scenario. We'll look at important concerns that arise in distributed systems, like latency and failure. We'll go on to cover the basics of Spark, a functionally-oriented framework for big data processing in Scala. We'll end the first week by exercising what we learned about Spark by immediately getting our hands dirty analyzing a real-world data set.
What's included
7 videos7 readings3 programming assignments
Show info about module content
7 videos•Total 105 minutes
Introduction, Logistics, What You'll Learn•15 minutes
Data-Parallel to Distributed Data-Parallel•10 minutes
Latency•25 minutes
RDDs, Spark's Distributed Collection•9 minutes
RDDs: Transformation and Actions•16 minutes
Evaluation in Spark: Unlike Scala Collections!•21 minutes
Cluster Topology Matters!•8 minutes
7 readings•Total 65 minutes
Working on Assignments•5 minutes
Tools Setup (Please read)•10 minutes
Scala 3 REPL and Worksheets•10 minutes
Cheat Sheet•10 minutes
SBT tutorial and Submission of Assignments (Please read)•10 minutes
This week, we'll look at a special kind of RDD called pair RDDs. With this specialized kind of RDD in hand, we'll cover essential operations on large data sets, such as reductions and joins.
What's included
4 videos2 programming assignments
Show info about module content
4 videos•Total 59 minutes
Reduction Operations•15 minutes
Pair RDDs•6 minutes
Transformations and Actions on Pair RDDs•20 minutes
Joins•17 minutes
2 programming assignments•Total 360 minutes
StackOverflow (2 week long assignment) (audit)•180 minutes
StackOverflow (2 week long assignment)•180 minutes
Partitioning and Shuffling
Module 3•1 hour to complete
Module details
This week we'll look at some of the performance implications of using operations like joins. Is it possible to get the same result without having to pay for the overhead of moving data over the network? We'll answer this question by delving into how we can partition our data to achieve better data locality, in turn optimizing some of our Spark jobs.
What's included
4 videos
Show info about module content
4 videos•Total 57 minutes
Shuffling: What it is and why it's important•14 minutes
Partitioning•15 minutes
Optimizing with Partitioners•11 minutes
Wide vs Narrow Dependencies•17 minutes
Structured data: SQL, Dataframes, and Datasets
Module 4•8 hours to complete
Module details
With our newfound understanding of the cost of data movement in a Spark job, and some experience optimizing jobs for data locality last week, this week we'll focus on how we can more easily achieve similar optimizations. Can structured data help us? We'll look at Spark SQL and its powerful optimizer which uses structure to apply impressive optimizations. We'll move on to cover DataFrames and Datasets, which give us a way to mix RDDs with the powerful automatic optimizations behind Spark SQL.
What's included
5 videos2 programming assignments
Show info about module content
5 videos•Total 133 minutes
Structured vs Unstructured Data•15 minutes
Spark SQL•17 minutes
DataFrames (1)•27 minutes
DataFrames (2)•30 minutes
Datasets•44 minutes
2 programming assignments•Total 360 minutes
Time Usage (audit)•180 minutes
Time Usage•180 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Instructor
Instructor ratings
Instructor ratings
We asked all learners to give feedback on our instructors based on the quality of their teaching style.
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
Jennifer J.
Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
Larry W.
Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
Chaitanya A.
"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."
Learner reviews
4.6
2,600 reviews
5 stars
73%
4 stars
21.03%
3 stars
4.42%
2 stars
0.65%
1 star
0.88%
Showing 3 of 2600
M
MP
5·
Reviewed on Apr 8, 2017
Excellent material. Very good flow. Heather has an amazing way of walking through the flow and simplifying the concepts. Great assignments -- takes a bit longer than 3 hours.
N
NG
5·
Reviewed on Mar 27, 2017
goot as introduction about spark and big data. Small notice: it is incorrect to compare performance hadoop and spark. As I understand, spark was expected to be compacred with MapReduce.
C
CH
4·
Reviewed on Nov 16, 2017
although spark part is taught nicely, it also takes a lot of time to understand the sql part and remember a lot of sql operations as a zero background man in sql
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.