Share E-Book
Scan to open this page

Scan with your phone to open this page

AuthorJules S. Damji, Brooke Wenig, Tathagata Das, Denny Lee

Data is getting bigger, arriving faster, and coming in varied formats — and it all needs to be processed at scale for analytics or machine learning. How can you process such varied data workloads efficiently? Enter Apache Spark. Updated to emphasize new features in Spark 2.x., this second edition shows data engineers and scientists why structure and unification in Spark matters. Specifically, this book explains how to perform simple and complex data analytics and employ machine-learning algorithms. Through discourse, code snippets, and notebooks, you’ll be able to: • Learn Python, SQL, Scala, or Java high-level APIs: DataFrames and Datasets • Peek under the hood of the Spark SQL engine to understand Spark transformations and performance • Inspect, tune, and debug your Spark operations with Spark configurations and Spark UI • Connect to data sources: JSON, Parquet, CSV, Avro, ORC, Hive, S3, or Kafka • Perform analytics on batch and streaming data using Structured Streaming • Build reliable data pipelines with open source Delta Lake and Spark • Develop machine learning pipelines with MLlib and productionize models using MLflow • Use open source Pandas framework Koalas and Spark for data transformation and feature engineering

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
【One-Line Pitch】 A practical, code-first guide to Apache Spark 2.x for data engineers and scientists, covering structured APIs, the Spark SQL engine, streaming, and machine learning—ideal for anyone who wants to move from batch scripts to scalable, unified data analytics. 【Book Arc】 - **Opening (~0%–9%)**: Introduces Spark as a unified analytics engine for batch, streaming, and ML workloads; explains why structure and unification matter, and outlines the book’s scope (DataFrames, Datasets, Spark SQL, Structured Streaming, Delta Lake, MLlib, MLflow, Koalas). - **Early (~9%–25%)**: Walks through downloading Spark, setting up a session, and running first examples; covers the Spark UI, jobs, stages, tasks, and the DAG scheduler—giving readers a mental model of how Spark executes work. - **Early (~25%–34%)**: Dives into RDD fundamentals (dependencies, partitions, compute functions) and explains why the original RDD model is opaque to Spark; transitions to the Structured APIs, showing how DataFrames and schemas (programmatic or DDL) improve performance and clarity. - **Middle (~34%–47%)**: Explores common DataFrame operations (select, filter, groupBy, withColumn), reading/writing via DataFrameReader/DataFrameWriter, and the Dataset API with typed objects (e.g., Scala case classes); emphasizes that all languages compile to the same query plan and bytecode. - **Middle (~47%–53%+)**: Introduces Spark SQL with temporary views and query examples on real datasets (e.g., flight delays); sets up for deeper topics like the Catalyst optimizer, built-in data sources, and later chapters on streaming and ML (not fully covered in excerpts). 【Key Takeaways】 - **Unified entry point simplifies Spark** (Early): SparkSession in 2.x replaces multiple contexts (SparkContext, SQLContext, etc.), letting you create DataFrames, run SQL, and read data from one conduit—reducing boilerplate and confusion. - **RDDs are foundational but opaque** (Early): RDDs offer resiliency via dependencies, parallelism via partitions, and a compute function, but Spark can’t inspect the logic—limiting optimization; this motivates higher-level Structured APIs. - **Schemas boost efficiency and clarity** (Early): Defining schemas programmatically or via DDL strings (e.g., `"author STRING, title STRING, pages INT"`) is faster and more reliable than inference, especially for large files like the 4.3M-row SF Fire Department dataset. - **DataFrameReader/Writer handle diverse sources** (Middle): Reading and writing JSON, CSV, Parquet, Avro, ORC, and more is abstracted behind simple interfaces, making data ingestion and export uniform across formats. - **Language choice doesn’t change execution** (Middle): Python, Scala, SQL, or Java code goes through the same four-phase journey (analysis, logical plan, physical plan, execution), producing identical bytecode—so pick the API you’re comfortable with. - **Datasets add type safety** (Middle): Using Scala case classes (e.g., `DeviceIoTData`) converts generic `Dataset[Row]` into typed `Dataset[T]`, enabling compile-time checks and domain-specific operations—useful for complex transformations. - **Spark SQL integrates seamlessly** (Middle): Registering DataFrames as temporary views lets you query with `spark.sql("SELECT ...")`, blending declarative SQL with programmatic APIs for flexible analytics. 【Reading Tips】 - **Skim Chapter 1–2 for setup and UI basics** (Early): If you’ve used Spark before, focus on the SparkSession and Spark UI sections; the DAG visualization and job/stage/task breakdown are worth a deep read for debugging later. - **Deep-read Chapter 3 on Structured APIs** (Early–Middle): This is the core—spend time on schema definition, DataFrame operations, and the Dataset API; the end-to-end examples (M&Ms, IoT devices) are practical and reusable. - **Treat code snippets as templates** (Throughout): The book provides Python and Scala side-by-side; pick one language and adapt the patterns (e.g., `withColumn`, `groupBy`, `agg`) to your own datasets rather than memorizing syntax. - **Watch for the Catalyst optimizer discussion** (Middle): The section on query plans and bytecode is conceptually dense but crucial—understand that all APIs compile to the same plan, and you’ll grasp why Spark is fast. - **Skip or skim the O’Reilly permissions boilerplate** (Opening): The early pages include standard legal text; jump to the technical content around Chapter 2 for practical value. 【Coverage Limits】 Excerpts cover roughly the first half of the book (through Spark SQL basics); later chapters on Structured Streaming, Delta Lake, MLlib, MLflow, and Koalas are listed in the blurb but not detailed in the source material.
Excerpt 1
28 Spark Tasks 28 Transformations, Actions, and Lazy Evaluation 28 Narrow and Wide Transformations 30 The Spark UI 31 Your First Standalone Application 34 Co...
View in text
Excerpt 2
onduit, you can create JVM runtime parameters, define Data‐ Frames and Datasets, read from data sources, access catalog metadata, and issue Spark SQL queries...
View in text
Excerpt 3
it’s unable to inspect the computation or expression in the function, Spark has no way to optimize the expression—it has no comprehension of its intention. A...
View in text
Excerpt 4
ample code blocks will go through the same process, eventu‐ ally ending up with a similar query plan and identical bytecode for execution. That is, regardles...
View in text
Excerpt 5
|264 | |United States |India |69 | |Egypt |United States |24 | |Equatorial Guinea|United States |1 | |United States |Singapore |25 | |United States |Grenada...
View in text
Excerpt 6
the foo DataFrame, use the withColumn() method: // In Scala import org.apache.spark.sql.functions.expr val foo2 = foo.withColumn( "status", expr("CASE WHEN d...
View in text
Excerpt 7
n increasing overall performance for large Spark workloads. Optimizing and Tuning Spark for Efficiency | 179 Figure 7-5. Cache distributed across 12 partitio...
View in text
Excerpt 8
, it only supports append mode, because while it is easy to write new files in the output directory (i.e., append data to a directory), it is hard to modify...
View in text
Tags
AI categories
Big DataProgrammingBackend
ISBN: 1492044954
Publisher: O’Reilly Media
Publish Year: 2019
Language: English
Pages: 246
File Format: PDF
File Size: 15.3 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…