Bird
Raised Fist0
Apache Sparkdata~5 mins

Creating RDDs from collections and files in Apache Spark

Choose your learning style10 modes available
Introduction

We create RDDs to work with data in Spark. RDDs let us process data in parallel easily.

When you have a small list of data in your program and want to process it with Spark.
When you want to read data from a file and analyze it using Spark's distributed system.
When you want to convert existing data collections into RDDs for parallel processing.
When you want to load text data from files for word counting or filtering.
When you want to experiment with Spark using simple data before working with big files.
Syntax
Apache Spark
rdd = spark.sparkContext.parallelize(collection)
rdd = spark.sparkContext.textFile(file_path)

parallelize() creates an RDD from a local collection like a list.

textFile() reads a file and creates an RDD where each item is a line.

Examples
This creates an RDD from a list of numbers.
Apache Spark
numbers = [1, 2, 3, 4]
rdd_numbers = spark.sparkContext.parallelize(numbers)
This reads a text file and creates an RDD of lines.
Apache Spark
lines_rdd = spark.sparkContext.textFile("data/sample.txt")
Sample Program

This program shows how to create RDDs from a list and from a text file. It prints the contents of both RDDs.

Apache Spark
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("CreateRDDs").getOrCreate()

# Create RDD from a collection
fruits = ["apple", "banana", "cherry"]
rdd_fruits = spark.sparkContext.parallelize(fruits)

print("RDD from collection:")
print(rdd_fruits.collect())

# Create RDD from a text file
# For demonstration, create a small text file first
file_path = "/tmp/sample.txt"
with open(file_path, "w") as f:
    f.write("hello\nworld\nspark")

rdd_file = spark.sparkContext.textFile(file_path)

print("RDD from file lines:")
print(rdd_file.collect())

spark.stop()
OutputSuccess
Important Notes

Remember to call collect() to get all RDD items back to the driver for printing or inspection.

Creating RDDs from files is useful for big data, but for small data, collections are easier to use.

Always stop the Spark session when done to free resources.

Summary

Use parallelize() to create RDDs from local collections like lists.

Use textFile() to create RDDs from text files, where each line is an item.

RDDs let you process data in parallel with Spark easily.

Practice

(1/5)
1. What does the parallelize() method do in Apache Spark?
easy
A. Creates an RDD from a local collection like a list
B. Reads data from a text file into an RDD
C. Saves an RDD to a file
D. Filters elements in an RDD

Solution

  1. Step 1: Understand the purpose of parallelize()

    This method takes a local collection such as a list and creates an RDD from it, enabling parallel processing.
  2. Step 2: Differentiate from other methods

    textFile() reads from files, saveAsTextFile() saves data, and filter() filters data. These are different from parallelize().
  3. Final Answer:

    Creates an RDD from a local collection like a list -> Option A
  4. Quick Check:

    parallelize() = create RDD from list [OK]
Hint: parallelize() = local list to RDD [OK]
Common Mistakes:
  • Confusing parallelize() with textFile()
  • Thinking parallelize() reads files
  • Mixing up saving and creating RDDs
2. Which of the following is the correct syntax to create an RDD from a list [1, 2, 3] using SparkContext sc?
easy
A. sc.load([1, 2, 3])
B. sc.parallelize([1, 2, 3])
C. sc.createRDD([1, 2, 3])
D. sc.textFile([1, 2, 3])

Solution

  1. Step 1: Recall the method to create RDD from a list

    The correct method is parallelize() called on SparkContext with the list as argument.
  2. Step 2: Check syntax correctness

    sc.parallelize([1, 2, 3]) is valid syntax. Other options are invalid or do not exist.
  3. Final Answer:

    sc.parallelize([1, 2, 3]) -> Option B
  4. Quick Check:

    Use parallelize() with list [OK]
Hint: Use sc.parallelize(list) to create RDD [OK]
Common Mistakes:
  • Using textFile() with a list argument
  • Trying to use non-existent methods like createRDD()
  • Passing list to load() which is for files
3. Given the following code snippet:
rdd = sc.parallelize(['apple', 'banana', 'cherry'])
result = rdd.collect()

What will be the value of result?
medium
A. A list of line numbers
B. An RDD object
C. ['apple', 'banana', 'cherry']
D. A text file path

Solution

  1. Step 1: Understand what parallelize() does

    It creates an RDD from the list ['apple', 'banana', 'cherry'].
  2. Step 2: Understand what collect() does

    collect() returns all elements of the RDD as a list to the driver program.
  3. Final Answer:

    ['apple', 'banana', 'cherry'] -> Option C
  4. Quick Check:

    collect() returns list of RDD elements [OK]
Hint: collect() returns all RDD elements as list [OK]
Common Mistakes:
  • Thinking collect() returns an RDD
  • Confusing collect() with saving to file
  • Expecting line numbers instead of data
4. Identify the error in the following code snippet:
rdd = sc.textFile([1, 2, 3])
print(rdd.collect())
medium
A. textFile() expects a string path, not a list
B. collect() cannot be called on textFile RDD
C. sc.textFile() requires two arguments
D. print() cannot display RDD contents

Solution

  1. Step 1: Check the argument type for textFile()

    textFile() expects a string path to a file, not a list of strings.
  2. Step 2: Understand the error cause

    Passing a list causes a type error because Spark cannot interpret it as a file path.
  3. Final Answer:

    textFile() expects a string path, not a list -> Option A
  4. Quick Check:

    textFile() needs string path [OK]
Hint: Pass file path as string to textFile() [OK]
Common Mistakes:
  • Passing list instead of string to textFile()
  • Thinking collect() is invalid on textFile RDD
  • Assuming textFile needs multiple arguments
5. You want to create an RDD from a text file named data.txt and then filter lines containing the word "error". Which code snippet correctly creates the RDD and applies the filter?
hard
A. rdd = sc.load('data.txt') filtered = rdd.filter(lambda line: 'error' in line)
B. rdd = sc.parallelize('data.txt') filtered = rdd.filter(lambda line: 'error' in line)
C. rdd = sc.textFile([1, 2, 3]) filtered = rdd.filter(lambda line: 'error' in line)
D. rdd = sc.textFile('data.txt') filtered = rdd.filter(lambda line: 'error' in line)

Solution

  1. Step 1: Choose correct method to create RDD from file

    sc.textFile('data.txt') reads the file line by line into an RDD. Passing a string path is required.
  2. Step 2: Apply filter to select lines containing 'error'

    The filter() method with a lambda checks each line for the substring 'error'. This is the correct way to filter.
  3. Final Answer:

    rdd = sc.textFile('data.txt') filtered = rdd.filter(lambda line: 'error' in line) -> Option D
  4. Quick Check:

    Use textFile() with string path + filter() [OK]
Hint: Use textFile('file') then filter() with lambda [OK]
Common Mistakes:
  • Using parallelize() to read files
  • Passing list instead of string to textFile()
  • Using non-existent sc.load() method
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