Compartilhar via


Classe DataFrameReader

Interface usada para carregar um DataFrame de sistemas de armazenamento externos (por exemplo, sistemas de arquivos, repositórios de chave-valor etc.

Dá suporte ao Spark Connect

Sintaxe

Use SparkSession.read para acessar essa interface.

Methods

Método Descrição
format(source) Especifica o formato de 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 retorna-os como um DataFrame.
json(path, schema, ...) Carrega arquivos JSON e retorna os resultados como um DataFrame.
table(tableName) Retorna a tabela especificada como um DataFrame.
parquet(*paths, **options) Carrega arquivos Parquet, retornando o resultado como um DataFrame.
text(paths, wholetext, lineSep, ...) Carrega arquivos de texto e retorna um DataFrame cujo esquema começa com uma coluna de cadeia de caracteres chamada "valor".
csv(path, schema, sep, encoding, ...) Carrega um arquivo CSV e retorna o resultado como um DataFrame.
xml(path, rowTag, schema, ...) Carrega um arquivo XML e retorna o resultado como um DataFrame.
excel(path, dataAddress, headerRows, ...) Carrega arquivos do Excel, retornando o resultado como um DataFrame.
orc(path, mergeSchema, pathGlobFilter, ...) Carrega arquivos ORC, retornando o resultado como um DataFrame.
jdbc(url, table, column, lowerBound, upperBound, numPartitions, predicates, properties) Construa um DataFrame que representa a tabela de banco de dados denominada tabela acessível por meio da URL JDBC e das propriedades de conexã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")

Usando o formato e a 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")

Especificando o 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")