Partilhar via


Classe DataFrameReader

Interface usada para carregar um DataFrame a partir de sistemas de armazenamento externos (por exemplo, sistemas de ficheiros, armazenamentos-chave-valor, etc).

Suporta Spark Connect

Sintaxe

Use SparkSession.read para aceder a esta interface.

Methods

Método Descrição
format(source) Especifica o formato da fonte de dados de entrada.
schema(schema) Especifica o esquema de entrada.
option(key, value) Adiciona uma opção de entrada para a fonte de dados subjacente.
options(**options) Adiciona opções de entrada para a fonte de dados subjacente.
load(path, format, schema, **options) Carrega dados de uma fonte de dados e devolve-os como DataFrame.
json(path, schema, ...) Carrega ficheiros JSON e devolve os resultados como DataFrame.
table(tableName) Devolve a tabela especificada como DataFrame.
parquet(*paths, **options) Carrega ficheiros Parquet, devolvendo o resultado como DataFrame.
text(paths, wholetext, lineSep, ...) Carrega ficheiros de texto e retorna um DataFrame cujo esquema começa com uma coluna de cadeia chamada "value".
csv(path, schema, sep, encoding, ...) Carrega um ficheiro CSV e devolve o resultado como DataFrame.
xml(path, rowTag, schema, ...) Carrega um ficheiro XML e devolve o resultado como DataFrame.
excel(path, dataAddress, headerRows, ...) Carrega ficheiros Excel, devolvendo o resultado como DataFrame.
orc(path, mergeSchema, pathGlobFilter, ...) Carrega ficheiros ORC, retornando o resultado como DataFrame.
jdbc(url, table, column, lowerBound, upperBound, numPartitions, predicates, properties) Construa um DataFrame que represente a tabela nomeada da base de dados acessível via URL JDBC URL e propriedades de ligação.

Exemplos

Leitura de diferentes fontes de dados

# Access DataFrameReader through SparkSession
spark.read

# Read JSON file
df = spark.read.json("path/to/file.json")

# Read CSV file with options
df = spark.read.option("header", "true").csv("path/to/file.csv")

# Read Parquet file
df = spark.read.parquet("path/to/file.parquet")

# Read from a table
df = spark.read.table("table_name")

Utilização de formatação e carga

# Specify format explicitly
df = spark.read.format("json").load("path/to/file.json")

# With options
df = spark.read.format("csv") \
    .option("header", "true") \
    .option("inferSchema", "true") \
    .load("path/to/file.csv")

Especificação do esquema

from pyspark.sql.types import StructType, StructField, StringType, IntegerType

# Define schema
schema = StructType([
    StructField("name", StringType(), True),
    StructField("age", IntegerType(), True)
])

# Read CSV with schema
df = spark.read.schema(schema).csv("path/to/file.csv")

# Read CSV with DDL-formatted string schema
df = spark.read.schema("name STRING, age INT").csv("path/to/file.csv")

Leitura do JDBC

# Read from database table
df = spark.read.jdbc(
    url="jdbc:postgresql://localhost:5432/mydb",
    table="users",
    properties={"user": "myuser", "password": "mypassword"}
)

# Read with partitioning for parallel loading
df = spark.read.jdbc(
    url="jdbc:postgresql://localhost:5432/mydb",
    table="users",
    column="id",
    lowerBound=1,
    upperBound=1000,
    numPartitions=10,
    properties={"user": "myuser", "password": "mypassword"}
)

Encadeamento de métodos

# Chain multiple configuration methods
df = spark.read \
    .format("csv") \
    .option("header", "true") \
    .option("inferSchema", "true") \
    .option("delimiter", ",") \
    .schema("name STRING, age INT") \
    .load("path/to/file.csv")