#### Overview of this book

Efficient business decisions with an accurate sense of business data helps in delivering better performance across products and services. This book helps you to leverage the popular Scala libraries and tools for performing core data analysis tasks with ease. The book begins with a quick overview of the building blocks of a standard data analysis process. You will learn to perform basic tasks like Extraction, Staging, Validation, Cleaning, and Shaping of datasets. You will later deep dive into the data exploration and visualization areas of the data analysis life cycle. You will make use of popular Scala libraries like Saddle, Breeze, Vegas, and PredictionIO for processing your datasets. You will learn statistical methods for deriving meaningful insights from data. You will also learn to create applications for Apache Spark 2.x on complex data analysis, in real-time. You will discover traditional machine learning techniques for doing data analysis. Furthermore, you will also be introduced to neural networks and deep learning from a data analysis standpoint. By the end of this book, you will be capable of handling large sets of structured and unstructured data, perform exploratory analysis, and building efficient Scala applications for discovering and delivering insights
Preface
Free Chapter
Section 1: Scala and Data Analysis Life Cycle
Data Analysis Life Cycle
Data Ingestion
Data Exploration and Visualization
Applying Statistics and Hypothesis Testing
Section 2: Advanced Data Analysis and Machine Learning
Introduction to Spark for Distributed Data Analysis
Traditional Machine Learning for Data Analysis
Section 3: Real-Time Data Analysis and Scalability
Near Real-Time Data Analysis Using Streaming
Working with Data at Scale
Another Book You May Enjoy

# Working with data at scale

Working with data at scale and handling large data volumes significantly changes data analysis and processing. To get an intuition for the problems with data at scale, let's look at a simple problem of computing the median value of numbers. The median is the mid-point that splits the data into two parts. Use the following numbers as an example:

`8 1 2 7 9 0 5 `

We will first sort the numbers in ascending order:

`0 1 2 5 7 8 9`

The median value is 5, because it splits the data into two halves, where half of the values are below five and the another half are above five.

Now, let's imagine that the count of these numbers was of the order of billions. Let's explore a solution to this problem in Scala REPL. Traditionally, we would need to do the following steps to compute the median value:

1. Load the data into memory on a single computer's...