Bird
Raised Fist0
Apache Sparkdata~5 mins

Handling data skew at scale in Apache Spark - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is data skew in the context of Apache Spark?
Data skew happens when some partitions have much more data than others, causing some tasks to take longer and slowing down the whole job.
Click to reveal answer
beginner
Why is data skew a problem when processing big data with Spark?
Because tasks with large partitions take longer, the cluster resources are not used evenly, leading to slow performance and wasted time.
Click to reveal answer
intermediate
Name one simple technique to handle data skew in Spark.
Salting keys: add a random number to the key to spread skewed data across multiple partitions.
Click to reveal answer
intermediate
What does the 'salting' technique do to reduce data skew?
It adds a random prefix or suffix to keys so that skewed keys are split into multiple smaller groups, balancing the load.
Click to reveal answer
intermediate
How can broadcasting small tables help with data skew in Spark joins?
Broadcasting sends the small table to all nodes, so Spark can join locally without shuffling large skewed data, improving speed.
Click to reveal answer
What is the main cause of data skew in Spark?
AIncorrect data types
BUsing too many executors
CSmall cluster size
DUneven distribution of data across partitions
Which technique involves adding a random number to keys to fix skew?
ABroadcast join
BSalting
CCaching
DFiltering
What is a benefit of broadcasting a small table in a join?
AReduces shuffle and handles skew
BIncreases shuffle size
CSlows down the job
DDuplicates data
Which Spark operation is most affected by data skew?
AMap
BReduceByKey
CJoin
DFilter
What is a sign that your Spark job has data skew?
ASome tasks take much longer than others
BNo shuffle happens
CAll tasks finish at the same time
DJob runs very fast
Explain what data skew is and why it causes problems in Spark jobs.
Think about how some partitions get more data than others.
You got /4 concepts.
    Describe two methods to handle data skew in Spark and how they work.
    One method changes keys, another sends small data everywhere.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main problem caused by data skew in Apache Spark jobs?
      easy
      A. Some tasks become much larger and slower than others
      B. All tasks run equally fast
      C. Data is lost during processing
      D. Spark automatically fixes skew without user action

      Solution

      1. Step 1: Understand data skew impact

        Data skew means some keys have many more records, causing uneven task sizes.
      2. Step 2: Identify effect on tasks

        Tasks processing large keys take longer, slowing the whole job.
      3. Final Answer:

        Some tasks become much larger and slower than others -> Option A
      4. Quick Check:

        Data skew = uneven task sizes [OK]
      Hint: Data skew means uneven task sizes slowing jobs [OK]
      Common Mistakes:
      • Thinking all tasks run equally fast
      • Believing Spark fixes skew automatically
      • Confusing data loss with skew
      2. Which of the following is the correct way to add a salt key to a DataFrame column named user_id in PySpark?
      easy
      A. df.withColumn('salted_key', concat(col('user_id'), lit('_'), rand()))
      B. df.withColumn('salted_key', col('user_id') + rand())
      C. df.withColumn('salted_key', col('user_id').cast('int'))
      D. df.withColumn('salted_key', col('user_id').substr(0, 3))

      Solution

      1. Step 1: Understand salting technique

        Salting adds a random value to the key to spread data across partitions.
      2. Step 2: Check correct syntax for salting

        Concatenating user_id with a random number as string is correct.
      3. Final Answer:

        df.withColumn('salted_key', concat(col('user_id'), lit('_'), rand())) -> Option A
      4. Quick Check:

        Salting = concat key + random [OK]
      Hint: Use concat with random value to salt keys [OK]
      Common Mistakes:
      • Adding random float directly to string key
      • Casting key without salting
      • Using substring instead of salting
      3. Given the following PySpark code snippet to reduce skew by salting, what will be the output count of salted_df if df has 1000 rows?
      from pyspark.sql.functions import col, concat, lit, rand
      salted_df = df.withColumn('salted_key', concat(col('key'), lit('_'), (rand() * 10).cast('int')))
      count = salted_df.count()
      medium
      A. 0
      B. 1000
      C. 10
      D. 100

      Solution

      1. Step 1: Understand salting effect on row count

        Salting adds a new column but does not change the number of rows.
      2. Step 2: Count rows after salting

        The count remains the same as original DataFrame, 1000 rows.
      3. Final Answer:

        1000 -> Option B
      4. Quick Check:

        Salting adds column, count unchanged [OK]
      Hint: Salting adds column, row count stays same [OK]
      Common Mistakes:
      • Thinking salting duplicates rows
      • Confusing salt range with row count
      • Assuming count changes after withColumn
      4. You have a join in Spark that is very slow due to data skew on the join key. Which of the following code snippets correctly applies salting to both DataFrames to fix the skew?
      df1_salted = df1.withColumn('salt', (rand() * 5).cast('int'))
      df2_salted = df2.withColumn('salt', (rand() * 5).cast('int'))
      joined = df1_salted.join(df2_salted, ['key', 'salt'])
      medium
      A. Incorrect: salting with fixed value instead of random
      B. Incorrect: salting only one DataFrame
      C. Incorrect: joining without salt column
      D. Correct: salting both sides and joining on key and salt

      Solution

      1. Step 1: Understand salting for joins

        To fix skew, salt both DataFrames on join key with same salt range.
      2. Step 2: Verify join condition

        Joining on both original key and salt column ensures balanced partitions.
      3. Final Answer:

        Correct: salting both sides and joining on key and salt -> Option D
      4. Quick Check:

        Salt both sides + join on key & salt [OK]
      Hint: Salt both DataFrames and join on key plus salt [OK]
      Common Mistakes:
      • Salting only one DataFrame
      • Joining without salt column
      • Using fixed salt value instead of random
      5. You have a Spark job with a very large skewed key causing one partition to be huge. You want to reduce skew by salting and also control shuffle partitions. Which approach below best balances load and parallelism?
      hard
      A. Add salt column but keep shuffle partitions very low
      B. Do not add salt, just increase shuffle partitions
      C. Add a salt column with random values, join on salted keys, and increase shuffle partitions
      D. Add salt column with fixed value and reduce shuffle partitions

      Solution

      1. Step 1: Apply salting to spread skewed key

        Adding a salt column with random values breaks large groups into smaller ones.
      2. Step 2: Adjust shuffle partitions to increase parallelism

        Increasing shuffle partitions allows more tasks to run in parallel, reducing bottlenecks.
      3. Step 3: Combine salting and partition tuning

        Both salting and increasing partitions together balance load and improve job speed.
      4. Final Answer:

        Add a salt column with random values, join on salted keys, and increase shuffle partitions -> Option C
      5. Quick Check:

        Salt + more partitions = balanced load [OK]
      Hint: Salt keys and increase shuffle partitions for best balance [OK]
      Common Mistakes:
      • Keeping shuffle partitions too low after salting
      • Not salting and only increasing partitions
      • Using fixed salt value causing no skew fix
      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