Databricks Spark Developer Associate key terms
Databricks Spark Developer Associate · Get comfortable with the vocabulary.
- Driver
- Related: Executor, SparkSession, Job, Stage, and Task
The JVM process that hosts the SparkSession, converts your code into a query plan, schedules work on executors, and returns results to the user. If the driver stops, the whole application stops.
- Executor
- Related: Driver, Partition, Cache and Persist
A JVM process on a worker node that runs the individual tasks of an application and stores cached partitions. Each executor has a fixed number of cores and an amount of memory.
- SparkSession
- Related: DataFrame, Unity Catalog, Driver
The entry point object for Spark programming, giving access to DataFrame, SQL and catalog APIs plus runtime configuration. In Databricks notebooks it already exists as the variable spark.
- Job, Stage, and Task
- Related: DAG (Directed Acyclic Graph), Partition, Shuffle
A job is the work triggered by one action; it is split into stages at shuffle boundaries; each stage runs one task per partition. Tasks are the smallest unit of scheduled work.
- Partition
- Related: Shuffle, Job, Stage, and Task, Data Skew
A chunk of a distributed collection that one task processes. The number of partitions sets the maximum parallelism, and their size balance determines whether tasks run evenly.
- Shuffle
- Related: Narrow and Wide Transformations, Partition, Adaptive Query Execution (AQE)
The redistribution of rows across executors by key or by partition, required by wide operations such as groupBy, join, and distinct. Shuffles write to disk and move data over the network.
- Narrow and Wide Transformations
- Related: Shuffle, DAG (Directed Acyclic Graph), Lazy Evaluation
Narrow transformations such as select or filter compute each output partition from a single input partition. Wide transformations such as groupBy or join read many input partitions and therefore force a shuffle.
- DAG (Directed Acyclic Graph)
- Related: Job, Stage, and Task, Lazy Evaluation, Catalyst Optimizer
The graph of stages Spark derives from a query plan. The DAG scheduler submits stages in dependency order, retries failed tasks, and recomputes partitions whose data was lost.
- Lazy Evaluation
- Related: DAG (Directed Acyclic Graph), Catalyst Optimizer, DataFrame
Transformations only record a plan; nothing executes until an action such as count, show, or write is called. This lets the optimizer improve the entire chain before running it.
- Catalyst Optimizer
- Related: Tungsten Engine, Lazy Evaluation, Predicate Pushdown and Partition Pruning
Spark SQL's query optimizer. It applies rule-based rewrites and cost-based decisions to logical plans, then selects a physical plan, so declarative queries often beat hand-written procedural code.
- Tungsten Engine
- Related: Catalyst Optimizer, Executor
Spark's physical execution layer, which uses whole-stage code generation, off-heap binary data formats, and cache-aware algorithms to reduce CPU and memory overhead during task execution.
- DataFrame
- Related: Dataset, StructType, Lazy Evaluation
A distributed table of rows with named, typed columns and a logical plan. It is immutable; each transformation returns a new DataFrame that the optimizer can rewrite before execution.
- Dataset
- Related: DataFrame, StructType
A typed API available in Scala and Java where rows map to case classes or beans, giving compile-time checking while still using the Catalyst optimizer and Tungsten engine.
- StructType
- Related: Schema Inference, DataFrame
The schema class that describes a DataFrame as a list of fields, each with a name, data type, and nullability flag. It is used to declare schemas explicitly when reading data.
- Schema Inference
- Related: StructType, Auto Loader
Spark's automatic guessing of column names and types by scanning sample data. It costs an extra read and can pick wrong types, so production pipelines usually declare schemas.
- Python UDF
- Related: Vectorized (Pandas) UDF, DataFrame
A function written in Python and registered for use inside Spark SQL or DataFrame expressions. Rows are serialized one at a time between the JVM and Python, so it is slow.
- Vectorized (Pandas) UDF
- Related: Python UDF, Conversion Methods (to_spark, to_pandas_on_spark)
A user-defined function that receives data as Arrow-backed pandas Series or DataFrames in batches instead of one row at a time, greatly reducing serialization overhead compared with a plain Python UDF.
- Broadcast Join
- Related: Data Skew, Adaptive Query Execution (AQE), Shuffle
A join that copies the small input to every executor so the large input needs no shuffle. Spark chooses it from table statistics, a broadcast hint, or adaptive query execution.
- Cache and Persist
- Related: Executor, Spark UI
Storing a DataFrame's computed partitions on executors, in memory, disk, or both, so repeated actions skip recomputation. Useful when the same result is reused by several steps.
- Adaptive Query Execution (AQE)
- Related: Broadcast Join, Shuffle, Data Skew
A runtime feature that re-optimizes the plan between shuffle stages using real data sizes: it merges small partitions, switches to broadcast joins, and splits skewed partitions.
- Data Skew
- Related: Spill, Broadcast Join, Adaptive Query Execution (AQE)
A condition where a few partition keys hold far more rows than others, so a handful of tasks run long while most executors idle. Common fixes are salting, broadcast joins, and AQE skew handling.
- Spill
- Related: Data Skew, Spark UI, Partition
The writing of intermediate data to executor local disk when memory is full. It prevents out-of-memory failures but adds I/O and slows tasks noticeably.
- Spark UI
- Related: Spill, Data Skew, Job, Stage, and Task
The web interface for a running or finished application, showing jobs, stages, tasks, SQL plans, shuffle reads and writes, and storage. It is the first place to diagnose slow stages.
- Predicate Pushdown and Partition Pruning
- Related: OPTIMIZE and Z-ORDER, Catalyst Optimizer, Unity Catalog
Optimizations that move filters down to the data source so only matching partitions, files, or row groups are read. They are the main reason partitioned and Delta tables scan quickly.
- Unity Catalog
- Related: Managed and External Tables, Temporary View
Databricks' centralized governance layer, naming data as catalog.schema.table and adding permissions, auditing, and lineage across workspaces. Both SQL and DataFrame code resolve names through it.
- Managed and External Tables
- Related: Unity Catalog, OPTIMIZE and Z-ORDER
For a managed table, the metastore owns both metadata and files, so dropping it deletes the data. For an external table, files live at a path you choose and survive the drop.
- Temporary View
- Related: DataFrame, Unity Catalog
A named SQL view over a DataFrame that lives only for the current session. Global temporary views are visible across sessions of one application under the global_temp database.
- MERGE INTO
- Related: foreachBatch, OPTIMIZE and Z-ORDER
A Delta Lake statement that inserts, updates, and deletes target rows in a single atomic operation based on a match condition with a source table. It is the standard way to upsert.
- OPTIMIZE and Z-ORDER
- Related: Predicate Pushdown and Partition Pruning, Managed and External Tables, MERGE INTO
Delta Lake commands: OPTIMIZE compacts many small files into larger ones, and Z-ORDER clusters rows by chosen columns so later filtered queries skip more files.
- Streaming DataFrame
- Related: Trigger and Output Mode, Checkpoint Location, Watermark
An unbounded table evaluated incrementally, where each trigger processes only newly arrived data. Results are written with writeStream and require a checkpoint location for recovery.
- Trigger and Output Mode
- Related: Streaming DataFrame, Checkpoint Location
Triggers decide when micro-batches run, for example every few seconds, once, or availableNow. Output modes decide what each batch emits: append only, update changed rows, or complete results.
- Watermark
- Related: Streaming DataFrame, Trigger and Output Mode
A bound on how late event-time data may arrive. Spark uses it to drop old rows and to limit the state kept for streaming aggregations, enabling append output.
- Checkpoint Location
- Related: Streaming DataFrame, foreachBatch
A durable directory where a streaming query records offsets, commit logs, and aggregation state. Restarting from the same checkpoint resumes exactly where the query stopped.
- Auto Loader
- Related: Streaming DataFrame, Schema Inference
A Databricks source, used with format cloudFiles, that discovers new files in cloud storage incrementally and tracks them, with schema inference and evolution, without listing the whole directory.
- foreachBatch
- Related: Streaming DataFrame, MERGE INTO
A streaming sink option that hands each micro-batch to your function as a static DataFrame, so you can run MERGE, write to several sinks, or reuse batch code.
- Spark Connect
- Related: Remote SparkSession, SparkSession
A client-server architecture in which a thin client sends unresolved plans over gRPC to a separate Spark server. This decouples the user's environment and language from the cluster.
- Remote SparkSession
- Related: Spark Connect, SparkSession
A SparkSession created by a Spark Connect client that points at a server URL instead of starting a local JVM. API calls become serialized plans executed on the server.
- pandas API on Spark
- Related: Distributed Index, Conversion Methods (to_spark, to_pandas_on_spark), Vectorized (Pandas) UDF
A pandas-compatible interface (pandas-on-Spark, formerly Koalas) that runs familiar pandas code on distributed Spark data using ps.DataFrame and ps.Series, imported from pyspark.pandas.
- Distributed Index
- Related: pandas API on Spark, Partition
In pandas API on Spark, data is split across partitions, each with its own index, so index-based operations such as iloc or some joins differ from single-machine pandas and may require a shuffle.
- Conversion Methods (to_spark, to_pandas_on_spark)
- Related: pandas API on Spark, DataFrame
Methods for moving between APIs: to_spark() and to_pandas_on_spark() switch representations, while to_pandas() collects a distributed frame into local memory and should only be used on small results.