Bird
Raised Fist0
Apache Sparkdata~10 mins

Data quality assertions in Apache Spark - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Data quality assertions
Load DataFrame
↓
Define Assertions
↓
Apply Assertions on Data
↓
Check Assertion Results
↓
Continue
Load data, define checks (assertions), apply them, then handle pass or fail results.
Execution Sample
Apache Spark
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([(1, 'A'), (2, None)], ['id', 'value'])
assert df.filter(df.value.isNull()).count() == 0, 'Null values found!'
This code checks if the 'value' column has any nulls and raises an error if it does.
Execution Table
StepActionEvaluationResult
1Load DataFrame with 2 rowsDataFrame createdRows: 2, Columns: id, value
2Define assertion: no nulls in 'value'Prepare filter conditionCondition ready
3Filter rows where 'value' is nullFilter result count = 1One row has null
4Check if count == 01 == 0False
5Assertion failsRaise error 'Null values found!'Error raised, stop execution
💡 Assertion failed because there is 1 null value in 'value' column
Variable Tracker
VariableStartAfter Step 3After Step 4Final
dfEmptyDataFrame with 2 rowsSameSame
null_countUndefined111
assertion_resultUndefinedUndefinedFalseError raised
Key Moments - 2 Insights
Why does the assertion fail even though the DataFrame has data?
Because the assertion checks for zero nulls in 'value' column, but step 3 shows 1 null row (see execution_table row 3).
What happens if the assertion condition is True?
If the condition is True (count == 0), the code continues without error (not shown here but implied after step 4).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the count of null values in 'value' column at step 3?
A0
B2
C1
DUndefined
💡 Hint
Check the 'Evaluation' column at step 3 in the execution_table.
At which step does the assertion fail and raise an error?
AStep 2
BStep 5
CStep 3
DStep 4
💡 Hint
Look for the row mentioning 'Assertion fails' and 'Error raised' in execution_table.
If the DataFrame had no nulls in 'value', how would the assertion result change at step 4?
AIt would be True
BIt would be False
CIt would raise an error
DIt would be undefined
💡 Hint
Step 4 compares null_count == 0; if no nulls, count is 0, so condition is True.
Concept Snapshot
Data quality assertions check if data meets rules.
Use filters to find bad data (e.g., nulls).
Assert conditions must be True to pass.
If False, raise error to stop or handle.
Helps catch data issues early.
Full Transcript
This visual execution shows how to use data quality assertions in Apache Spark. First, a DataFrame is loaded with sample data. Then, an assertion is defined to check that the 'value' column has no nulls. The code filters the DataFrame to count nulls and compares the count to zero. Since there is one null, the assertion fails and raises an error. Variables like the DataFrame and null count are tracked step-by-step. Key moments clarify why the assertion fails and what happens if it passes. The quiz tests understanding of the null count, failure step, and condition logic. This helps beginners see how assertions catch data problems early in data science workflows.

Practice

(1/5)
1. What is the main purpose of data quality assertions in Apache Spark?
easy
A. To create new columns based on calculations
B. To speed up data processing by caching
C. To check if data meets expected rules and find errors
D. To visualize data trends over time

Solution

  1. Step 1: Understand data quality assertions

    Data quality assertions are used to verify if data follows expected rules and to detect errors like missing or invalid values.
  2. Step 2: Compare with other options

    Options B, C, and D describe other Spark tasks unrelated to data quality assertions.
  3. Final Answer:

    To check if data meets expected rules and find errors -> Option C
  4. Quick Check:

    Data quality assertions = check rules and errors [OK]
Hint: Assertions check data rules and errors, not processing speed [OK]
Common Mistakes:
  • Confusing assertions with performance optimizations
  • Thinking assertions create new data columns
  • Mixing assertions with visualization tasks
2. Which of the following is the correct way to assert that a Spark DataFrame column age has no null values?
easy
A. df.filter(df.age.isNull()).count() == 0
B. df.filter(df.age.isNotNull()).count() == 0
C. df.filter(df.age == null).count() == 0
D. df.filter(df.age != null).count() == 0

Solution

  1. Step 1: Understand null checking in Spark

    To check for nulls, use isNull(). Counting rows where age is null should be zero for no nulls.
  2. Step 2: Analyze each option

    df.filter(df.age.isNull()).count() == 0 correctly checks if count of null age is zero. df.filter(df.age.isNotNull()).count() == 0 checks for non-null count equals zero, which is wrong. Options C and D use null with == or != which is invalid in Spark.
  3. Final Answer:

    df.filter(df.age.isNull()).count() == 0 -> Option A
  4. Quick Check:

    Use isNull() to find nulls, count should be zero [OK]
Hint: Use isNull() to find nulls, count zero means no nulls [OK]
Common Mistakes:
  • Using == null instead of isNull()
  • Checking isNotNull() count equals zero
  • Confusing null checks with non-null checks
3. Given the following Spark code, what will be the output?
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
data = [(1, 'Alice', 25), (2, 'Bob', None), (3, 'Charlie', 30)]
df = spark.createDataFrame(data, ['id', 'name', 'age'])
null_count = df.filter(df.age.isNull()).count()
print(null_count)
medium
A. 0
B. 1
C. 2
D. 3

Solution

  1. Step 1: Identify null values in the data

    The data has one row where age is None (null): the second row with Bob.
  2. Step 2: Count rows with null age

    The filter df.age.isNull() selects rows with null age, so count will be 1.
  3. Final Answer:

    1 -> Option B
  4. Quick Check:

    One null age value = 1 [OK]
Hint: Count rows with isNull() to find null entries [OK]
Common Mistakes:
  • Counting non-null rows instead of null rows
  • Misreading None as a valid age
  • Assuming no nulls without checking
4. You wrote this assertion to check if all values in column salary are positive:
assert df.filter(df.salary <= 0).count() == 0
But it passes even when there are null values in the salary column. What is the likely cause?
medium
A. The column salary contains null values, which are skipped by the comparison
B. The filter condition uses <= which is invalid in Spark
C. The count() method is not supported on DataFrames
D. The assert statement syntax is incorrect in Python

Solution

  1. Step 1: Understand filter behavior with nulls

    In Spark, null <= 0 evaluates to null, which is falsy in filter(), so null rows are skipped and not counted, causing the assertion to pass incorrectly when nulls exist.
  2. Step 2: Eliminate other options

    A: <= is valid in Spark filters. C: count() is supported on DataFrames. D: assert syntax is correct. B identifies the null-skipping issue.
  3. Final Answer:

    The column salary contains null values, which are skipped by the comparison -> Option A
  4. Quick Check:

    Nulls skipped in comparison filters [OK]
Hint: Nulls yield null in comparisons and are skipped by filter [OK]
Common Mistakes:
  • Not realizing nulls are skipped in comparison filters
  • Thinking comparisons catch nulls as invalid
  • Blaming syntax instead of null handling
5. You want to assert that a DataFrame df has no duplicate user_id values. Which Spark code correctly performs this data quality assertion?
hard
A. assert df.dropDuplicates().count() == df.count()
B. assert df.select('user_id').count() == df.count()
C. assert df.filter(df.user_id.isNull()).count() == 0
D. assert df.groupBy('user_id').count().filter('count > 1').count() == 0

Solution

  1. Step 1: Understand duplicate detection logic

    Duplicates mean some user_id appear more than once. Grouping by user_id and counting, then filtering counts > 1 finds duplicates.
  2. Step 2: Analyze each option

    A: df.dropDuplicates().count() == df.count() checks for completely identical rows across all columns, missing duplicates in user_id with differing other columns. B: df.select('user_id').count() == df.count() always true. C: Checks only nulls. D: Correctly finds groups with count > 1.
  3. Final Answer:

    assert df.groupBy('user_id').count().filter('count > 1').count() == 0 -> Option D
  4. Quick Check:

    Group and filter counts > 1 to find duplicates [OK]
Hint: Group by column, filter count > 1 to detect duplicates [OK]
Common Mistakes:
  • Using dropDuplicates() without column subset
  • Using count() without distinct or groupBy
  • Confusing null checks with duplicate checks
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard