We use DataFrames to organize data in rows and columns. Loading data from files like CSV, JSON, or Parquet helps us start analyzing real-world data easily.
Creating DataFrames from files (CSV, JSON, Parquet) in Apache Spark
spark.read.format("file_format").option("option_name", "option_value").load("file_path")
Replace file_format with csv, json, or parquet.
Options like header or inferSchema help Spark understand the data better.
df_csv = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("data/sales.csv")
df_json = spark.read.format("json").load("data/logs.json")
df_parquet = spark.read.format("parquet").load("data/records.parquet")
This program creates a Spark session, loads three types of files into DataFrames, and prints the first 3 rows of each. It shows how easy it is to start working with data from different file formats.
from pyspark.sql import SparkSession spark = SparkSession.builder.appName("LoadFilesExample").getOrCreate() # Load CSV file with header and schema inference csv_df = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("./data/sample.csv") # Load JSON file json_df = spark.read.format("json").load("./data/sample.json") # Load Parquet file parquet_df = spark.read.format("parquet").load("./data/sample.parquet") # Show first 3 rows of each DataFrame print("CSV DataFrame:") csv_df.show(3) print("JSON DataFrame:") json_df.show(3) print("Parquet DataFrame:") parquet_df.show(3) spark.stop()
Make sure the file path is correct and accessible by Spark.
CSV files often need header and inferSchema options for better results.
Parquet files store schema inside, so no extra options are usually needed.
DataFrames organize data in rows and columns for easy analysis.
You can load CSV, JSON, and Parquet files using spark.read.format().load().
Options help Spark understand the data better, especially for CSV files.
Practice
Solution
Step 1: Understand DataFrame concept
A DataFrame is a table-like structure with rows and columns used for data analysis.Step 2: Purpose of loading files
Loading files into DataFrames allows Spark to process and analyze data efficiently.Final Answer:
To organize data in rows and columns for easy analysis -> Option BQuick Check:
DataFrames = organized data [OK]
- Confusing DataFrame creation with file writing
- Thinking DataFrames delete files
- Assuming DataFrames convert data to plain text
Solution
Step 1: Recall Spark CSV loading syntax
The standard way is to use spark.read.format('csv').load('filename').Step 2: Check each option
spark.read.format('csv').load('file.csv') matches the correct syntax; others are incorrect or invalid methods.Final Answer:
spark.read.format('csv').load('file.csv') -> Option AQuick Check:
Use format('csv').load() for CSV [OK]
- Using spark.read.csv() without options
- Trying spark.load() which doesn't exist
- Passing format as a keyword argument in load()
df = spark.read.format('json').load('people.json')
df.printSchema()Assuming 'people.json' contains records like {"name": "Alice", "age": 30}.
Solution
Step 1: Understand JSON schema inference
Spark infers types from JSON: "name" is string, "age" is number (long).Step 2: Check nullability and types
By default, fields are nullable. Age inferred as long (integer type in Spark).Final Answer:
root |-- name: string (nullable = true) |-- age: long (nullable = true) -> Option AQuick Check:
JSON fields inferred correctly [OK]
- Assuming age is string instead of long
- Thinking fields are non-nullable by default
- Confusing integer with string types
df = spark.read.format('parquet').load('data.parquet')
df.show()Assuming 'data.parquet' exists and is valid.
Solution
Step 1: Check Parquet loading syntax
Using spark.read.format('parquet').load('file') is correct and standard.Step 2: Validate assumptions
If the file exists and is valid, df.show() will display the data without error.Final Answer:
Nothing is wrong; this code will load and show the DataFrame correctly -> Option DQuick Check:
Correct Parquet load syntax [OK]
- Using wrong format string like 'parq'
- Thinking schema is mandatory for Parquet
- Believing file extension is required in load()
Solution
Step 1: Understand CSV options usage
Options like header and inferSchema must be set before load() when using format().Step 2: Analyze each option
spark.read.format('csv').option('header', 'true').option('inferSchema', 'true').load('data.csv') sets options correctly before load(). spark.read.csv('data.csv', header=True, inferSchema=True) uses invalid syntax for Spark. spark.read.format('csv').load('data.csv').option('header', 'true').option('inferSchema', 'true') sets options after load(), which is wrong. spark.read.load('data.csv').option('header', 'true').option('inferSchema', 'true') misses format('csv').Final Answer:
spark.read.format('csv').option('header', 'true').option('inferSchema', 'true').load('data.csv') -> Option CQuick Check:
Set options before load() [OK]
- Setting options after load() call
- Using Python-style keyword arguments in Spark
- Not specifying format('csv') before load()
Ready to prove it?
Pass the test and this pattern moves unknown
