Q01 - Question
In the Spark UI, a join stage shows a Max task duration more than 50% higher than the 75th percentile. The stage also shows non-zero Shuffle Spill (Disk). A single customer ID appears in most of the records. Which two actions should you take to address the cause? Select two.
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Multi-select
- A. Call repartition() before every transformation to spread the data.
- B. Verify that Adaptive Query Execution (AQE) is enabled so skewed joins are handled dynamically.
- C. Cache the DataFrame with .persist() and do not call .unpersist().
- D. Salt the skewed join key by adding a random component.
B and D are correct.
Explanation: A Max duration more than 50% above the 75th percentile indicates data skew, and the repeated customer ID is a common cause. AQE dynamically handles skewed joins, and salting distributes the skewed key across partitions. Spill often accompanies skew, so addressing skew can also resolve the spill.
A is incorrect: Each call to repartition() triggers a full shuffle. Unnecessary repartitioning increases data movement.
C is incorrect: Spark cache requires explicit management. Cached data that you do not unpersist consumes memory that Spark needs for processing, which can worsen memory pressure.
Q02 - Question
A Lakeflow Job has five tasks. The third task failed because an upstream data source was unavailable, and the dependent tasks did not complete. The data source is now available again. You want to finish the run without re-running the tasks that already succeeded. What should you do?
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Single choice
- A. Increase the Maximum concurrent runs setting and start the job again from the first task.
- B. Select Restart run to cancel the active run and reset the retry period.
- C. Create a new run of the full job so all five tasks run again with fresh state.
- D. Open the failed run and select Repair run to re-run the failed task and its dependent tasks.
D is correct.
Explanation: Repair run re-runs only the unsuccessful tasks and their dependents. This saves time and compute compared with restarting the whole job. Repair is available for jobs with two or more tasks, and this job has five.
A is incorrect: Maximum concurrent runs addresses runs that queue or are skipped behind other runs. It does not resolve a task failure, and starting from the first task re-runs successful tasks.
B is incorrect: Restart run applies to continuous jobs that are in an exponential backoff state. It cancels the active run and starts a new run.
C is incorrect: A full run repeats tasks that already succeeded. This uses more time and compute than a repair run.
Q03 - Question
A Lakeflow Job has three independent ingestion tasks that run in parallel. A final task releases temporary resources that the ingestion tasks create. The final task must run after all three ingestion tasks finish, whether each task succeeds, fails, or is skipped. Which dependency condition should you configure on the final task?
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Single choice
- A. All done
- B. All succeeded
- C. At least one failed
- D. None failed
A is correct.
Explanation: All done runs the task after all upstream tasks finish, regardless of outcome. This fits a cleanup task that must release temporary resources in every case.
B is incorrect: All succeeded runs the task only when every upstream task completes successfully. Cleanup would not run after a failure.
C is incorrect: At least one failed runs the task only when an upstream task fails. Cleanup would not run when all ingestion tasks succeed.
D is incorrect: None failed runs the task when no upstream task failed, even if some were skipped. Cleanup would not run after a failure.
Q04 - Question
A team plans a recurring production ETL workload in Azure Databricks. The workload reads files from cloud storage, applies schema evolution, and maintains slowly changing dimensions. The team has mostly SQL-skilled members. Operations staff need lineage tracking and data quality rules that can halt processing when quality degrades, without extra tooling. Which approach should you choose?
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Single choice
- A. Notebooks with try-except blocks and custom validation code
- B. Notebooks, because they provide automatic lineage tracking
- C. Notebooks, because cell-by-cell iteration suits recurring production workloads
- D. Lakeflow pipelines that define streaming tables, materialized views, and expectations
D is correct.
Explanation: Lakeflow pipelines fit standardized ETL patterns such as reading from cloud storage, schema evolution, and slowly changing dimensions. They provide expectations that track violations and can halt processing, and they provide lineage tracking and monitoring without additional configuration. They are also SQL-friendly, which lowers the barrier for the team.
A is incorrect: Notebooks require custom implementation for error handling and manual validation code. This adds code to write and maintain and does not give built-in expectations.
B is incorrect: Notebooks require external tooling for lineage tracking. Lineage tracking is automatic in Lakeflow pipelines.
C is incorrect: Cell-by-cell iteration is useful for prototyping and exploration. It is not a reason to choose notebooks for a repeatable production workload with standard patterns.
Q05 - Question
You design an Azure Databricks pipeline that follows the medallion architecture. Source files arrive from several ingestion paths and can contain duplicate records and inconsistent data types. Auditors require the original data to stay available, and the team must be able to reprocess data if downstream requirements change. Where should you apply deduplication and schema enforcement?
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Single choice
- A. During ingestion, and discard the original records after they are cleaned
- B. In a separate cleaning and validation stage after ingestion, while the ingested data stays in its original form
- C. In the load stage, so that only gold layer tables contain cleaned data
- D. In views in the serving layer, so that consumers see cleaned data
B is correct.
Explanation: Ingestion should preserve data with minimal transformation, which corresponds to the bronze layer. Cleaning operations such as schema enforcement and deduplication belong in a separate stage that corresponds to the silver layer. This separation keeps the raw data available for auditing and reprocessing, and it gives later transformations validated data to build on.
A is incorrect: Cleaning during ingestion and discarding the original records removes the raw state, so you cannot reprocess data or audit it later.
C is incorrect: Cleaning in the load stage lets quality issues propagate through ingestion and transformation first. Data quality issues should be caught early.
D is incorrect: The serving layer provides access patterns, performance, and access control for consumers. Using it to fix data quality problems leaves the underlying tables unvalidated.
Q06 - Question
Your company shares one Azure Databricks workspace across several business units. Finance wants to charge each business unit for the Databricks Units (DBUs) its projects consume. You are creating new clusters and want the usage to be attributable by project in billing data. What should you do?
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Single choice
- A. Review the Metrics tab for each cluster and record CPU and memory utilization for each project.
- B. Apply custom tags such as project and business unit when you create the clusters, and query system.billing.usage by custom tag.
- C. Ask a workspace admin to create a budget for each project and use the budget emails as the chargeback record.
- D. Create the clusters now and add tags later so the tags apply to the historical usage records.
B is correct.
Explanation: Tags propagate from clusters and workspaces to billing records. You can query system.billing.usage and filter or group by custom_tags to see DBU usage for a project. Apply the tags consistently from the start.
A is incorrect: The Metrics tab shows hardware, Spark, and GPU metrics. It does not provide billing data that you can attribute to a project.
C is incorrect: Budgets track spending and send email notifications. Creating and managing budgets requires account admin permissions, and workspace admins typically cannot create them.
D is incorrect: You cannot add tags retroactively to historical usage. Usage that occurs before you apply the tags cannot be attributed by tag.
Q07 - Question
You build a Lakeflow pipeline. One dataset ingests new JSON files from cloud storage by using Auto Loader, and the source data is append-only. A second dataset joins customer and transaction data and calculates regional sums. Customer attributes in the source can change. Which table types should you define?
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Single choice
- A. Materialized views for both datasets
- B. Streaming tables for both datasets
- C. A streaming table for the ingestion dataset and a materialized view for the join and aggregation dataset
- D. A materialized view for the ingestion dataset and a streaming table for the join and aggregation dataset
C is correct.
Explanation: A streaming table is a Delta table for append-only processing and handles each input record once, so it fits ingestion of new files from cloud storage. A materialized view handles aggregations and complex joins and stays synchronized when upstream data changes, so it fits the join and regional sums.
A is incorrect: Materialized views are intended for transformations such as aggregations and joins, not for append-only ingestion that processes each record once.
B is incorrect: Streaming tables are for append-only data. They are not the right choice for aggregations and joins on dimensions that can change.
D is incorrect: This reverses the roles. The append-only ingestion fits a streaming table, and the aggregation with a join on changing data fits a materialized view.
Q08 - Question
A nightly Spark job runs slowly. On the cluster Metrics tab, the Server load distribution visualization shows the driver node in red and all worker nodes in blue. What is the most appropriate action?
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Single choice
- A. Move the cluster to a larger driver instance type.
- B. Add more worker nodes to the cluster.
- C. Restart the cluster to reset the Spark UI history before you investigate further.
- D. Reduce the auto-termination period so the cluster stops sooner.
A is correct.
Explanation: A red driver node with blue (idle) workers indicates that the driver is overloaded. A larger driver instance type addresses that constraint.
B is incorrect: The workers are idle, so more workers add capacity where it is not needed. The bottleneck is the driver.
C is incorrect: Restarting a cluster terminates running jobs and resets the Spark UI history. It removes diagnostic information and does not address the overloaded driver.
D is incorrect: Auto-termination shuts down idle clusters to control cost. It does not change driver capacity or fix slow execution.
Q09 - Question
Your organization runs Azure Databricks in several workspaces on the Premium plan. The operations team wants one place to query job events from all workspaces and to receive a notification when more than five job failures occur within an hour. Which approach meets the requirement?
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Single choice
- A. Query the system.access.audit system table separately in each workspace and review the results manually.
- B. Query the DatabricksClusters table in Azure Log Analytics and create an alert on cluster resize events.
- C. Stream logs to Azure Log Analytics, query the DatabricksJobs table with KQL, and create an alert rule that uses an action group.
- D. Open the Spark UI Jobs Timeline for each cluster and look for jobs with a red status indicator.
C is correct.
Explanation: Log streaming sends diagnostic data to Azure Log Analytics, where events from multiple workspaces can be queried in one place. The DatabricksJobs table holds job runs and failures. You can create an alert rule from a KQL query and use an action group to define who is notified. Diagnostic logs require the Azure Databricks Premium plan.
A is incorrect: The system.access.audit table is recommended for querying audit logs within Azure Databricks. Log streaming is the preferred approach for cross-service centralized monitoring and KQL-based alerting. Separate queries per workspace also do not give one place for the data.
B is incorrect: DatabricksClusters records cluster events such as creation, termination, and resizing. It does not record job failures.
D is incorrect: The Spark UI shows execution details for a single cluster. It does not centralize events across workspaces and does not send notifications.
Q10 - Question
A task in a Lakeflow Job fails occasionally because of network timeouts that resolve on their own. The on-call team also receives a failure notification on every retry attempt and wants fewer alerts. Which two configurations should you apply to the task? Select two.
Domain: Deploy and maintain data pipelines and workloads (30–35%) Type: Multi-select
- A. Set the dependency condition on the task to All done
- B. Configure a retry policy with a retry count and a retry interval
- C. Select Mute notifications until the last retry
- D. Add an expectation with ON VIOLATION FAIL UPDATE to the task
B and C are correct.
Explanation: Transient failures such as network timeouts often resolve themselves, so a retry policy with a retry count and a retry interval lets the task run again after the system recovers. Task-level notifications fire on each retry attempt, so selecting Mute notifications until the last retry reduces alerts and still notifies the team if the final attempt fails.
A is incorrect: The All done dependency condition controls when a task runs relative to upstream tasks. It does not retry a failed task or reduce notifications.
D is incorrect: ON VIOLATION FAIL UPDATE applies to data quality expectations in Lakeflow pipelines and stops a flow when a record violates a constraint. It does not handle transient network timeouts or notification volume.