Bird
Raised Fist0
Apache Airflowdevops~5 mins

Sharing data between tasks effectively in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is XCom in Airflow?
XCom (short for cross-communication) is a feature in Airflow that allows tasks to share small amounts of data between each other during a workflow run.
Click to reveal answer
beginner
How do you push data to XCom in an Airflow task?
You can push data to XCom by using the task instance's xcom_push method inside a PythonOperator or by returning a value from a Python callable, which Airflow automatically pushes to XCom.
Click to reveal answer
intermediate
What is the recommended size limit for data shared via XCom?
XCom is designed for small pieces of data like strings or small dictionaries. Large data should be stored externally (e.g., in a database or cloud storage) and referenced by XCom.
Click to reveal answer
beginner
How can you pull data from XCom in a downstream task?
You can pull data from XCom using the xcom_pull method on the task instance, specifying the task ID and key of the data you want to retrieve.
Click to reveal answer
intermediate
Why should you avoid sharing large data directly between tasks in Airflow?
Sharing large data directly can slow down your workflow and cause performance issues. Instead, store large data externally and share only references or metadata via XCom.
Click to reveal answer
What does XCom stand for in Airflow?
ACross-computation
BExternal communication
CExecution command
DCross-communication
Which method is used to push data to XCom inside a task?
Apush_data
Bxcom_push
Cxcom_send
Dsend_xcom
What is the best practice for sharing large data between Airflow tasks?
AStore data externally and share references via XCom
BPush large data directly via XCom
CUse environment variables
DWrite data to local disk only
How do you retrieve data from XCom in a downstream task?
AUsing xcom_pull method
BUsing xcom_get method
CUsing get_xcom method
DUsing pull_xcom method
What type of data is suitable for sharing via XCom?
ADatabase backups
BLarge files like videos
CSmall data like strings or dictionaries
DEntire datasets
Explain how Airflow tasks can share data effectively using XCom.
Think about how tasks send and receive small pieces of information.
You got /5 concepts.
    Describe best practices for handling large data sharing between Airflow tasks.
    Consider performance and data size limits.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the primary purpose of using Airflow Variables when sharing data between tasks?
      easy
      A. To execute tasks in parallel
      B. To monitor task execution logs
      C. To schedule DAG runs automatically
      D. To store small pieces of data accessible across different tasks

      Solution

      1. Step 1: Understand Airflow Variables role

        Airflow Variables are designed to hold small data values that can be shared between tasks.
      2. Step 2: Identify the correct use case

        Sharing data between tasks requires a storage mechanism accessible by all tasks, which Airflow Variables provide.
      3. Final Answer:

        To store small pieces of data accessible across different tasks -> Option D
      4. Quick Check:

        Airflow Variables = data sharing [OK]
      Hint: Variables store shared data between tasks easily [OK]
      Common Mistakes:
      • Confusing Variables with task scheduling
      • Thinking Variables execute tasks
      • Using Variables for logging
      2. Which of the following is the correct way to set an Airflow Variable named my_var with value 123 inside a PythonOperator task?
      easy
      A. Variable.set('my_var', 123)
      B. Variable.set(my_var, '123')
      C. Variable.get('my_var', 123)
      D. Variable.create('my_var', 123)

      Solution

      1. Step 1: Recall Variable.set syntax

        The correct method to set a variable is Variable.set(key, value) where key is a string and value is the data.
      2. Step 2: Check option correctness

        Variable.set('my_var', 123) uses Variable.set with key 'my_var' and value 123 correctly as a string key and integer value.
      3. Final Answer:

        Variable.set('my_var', 123) -> Option A
      4. Quick Check:

        Set variable = Variable.set(key, value) [OK]
      Hint: Use Variable.set('key', value) to store data [OK]
      Common Mistakes:
      • Using Variable.get instead of set to store data
      • Not quoting the variable name key
      • Using a non-existent method like Variable.create
      3. Given the following code snippet in two tasks, what will be printed by task_b?
      from airflow.models import Variable
      
      def task_a():
          Variable.set('shared_key', 'hello')
      
      def task_b():
          value = Variable.get('shared_key')
          print(value)
      medium
      A. None
      B. hello
      C. shared_key
      D. Error: Variable not found

      Solution

      1. Step 1: Analyze task_a behavior

        task_a sets the Variable 'shared_key' with value 'hello'.
      2. Step 2: Analyze task_b behavior

        task_b retrieves the Variable 'shared_key' and prints its value, which is 'hello'.
      3. Final Answer:

        hello -> Option B
      4. Quick Check:

        Set then get Variable = 'hello' [OK]
      Hint: Get returns the stored value by key [OK]
      Common Mistakes:
      • Expecting the key name instead of value
      • Assuming Variable.get returns None if set
      • Forgetting to set the Variable before getting
      4. You wrote this code in task_b to get a Variable set by task_a:
      value = Variable.get('my_var')
      But you get an error: KeyError: 'Variable my_var does not exist'. What is the best fix?
      medium
      A. Set a default value in Variable.get like Variable.get('my_var', default_var='default')
      B. Change Variable.get to Variable.set
      C. Remove the Variable.get call
      D. Restart Airflow scheduler

      Solution

      1. Step 1: Understand the error cause

        The error means 'my_var' was not set before getting it, so Variable.get fails.
      2. Step 2: Use default value to avoid error

        Variable.get supports a default_var parameter to return if key missing, preventing KeyError.
      3. Final Answer:

        Set a default value in Variable.get like Variable.get('my_var', default_var='default') -> Option A
      4. Quick Check:

        Use default_var to avoid missing key error [OK]
      Hint: Add default_var to Variable.get to prevent errors [OK]
      Common Mistakes:
      • Using Variable.set instead of get to read data
      • Ignoring missing Variable errors
      • Restarting scheduler without fixing code
      5. You want to share a list of user IDs between two tasks in Airflow. Which approach is best to share this data effectively?
      hard
      A. Write the list to a local file and read it in the next task
      B. Pass the list directly as a Python variable between tasks
      C. Use XComs to push and pull the list between tasks
      D. Serialize the list as JSON string and store it in an Airflow Variable

      Solution

      1. Step 1: Understand data sharing options

        Airflow Variables are for small strings; passing Python variables directly is not possible between tasks.
      2. Step 2: Identify best practice for complex data

        XComs are designed to share data like lists between tasks efficiently and safely.
      3. Final Answer:

        Use XComs to push and pull the list between tasks -> Option C
      4. Quick Check:

        XComs = best for task-to-task data sharing [OK]
      Hint: Use XComs for complex data sharing between tasks [OK]
      Common Mistakes:
      • Trying to pass Python variables directly
      • Using Variables for large or complex data
      • Using local files which break portability
      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