Aller au contenu principal

Classe DataFrameWriter

Interface utilisée pour écrire un DataFrame dans des systèmes de stockage externes (par exemple, systèmes de fichiers, magasins clé-valeur, etc).

Prend en charge Spark Connect

Syntaxe

Utilisez DataFrame.write pour accéder à cette interface.

Méthodes

Méthode

Description

mode(saveMode)

Spécifie le comportement lorsque les données ou la table existent déjà.

format(source)

Spécifie la source de données de sortie sous-jacente.

option(key, value)

Ajoute une option de sortie pour la source de données sous-jacente.

options(**options)

Ajoute des options de sortie pour la source de données sous-jacente.

partitionBy(*cols)

Partitionne la sortie par les colonnes données sur le système de fichiers.

bucketBy(numBuckets, col, *cols)

Regroupe la sortie par les colonnes données.

sortBy(col, *cols)

Trie la sortie de chaque compartiment par les colonnes données sur le système de fichiers.

clusterBy(*cols)

Clusters les données par les colonnes données pour optimiser les performances des queries.

save(path, format, mode, partitionBy, **options)

Enregistre le contenu du DataFrame dans une source de données.

insertInto(tableName, overwrite)

Insère le contenu du DataFrame dans la table spécifiée.

saveAsTable(name, format, mode, partitionBy, **options)

Enregistre le contenu du DataFrame en tant que table spécifiée.

json(path, mode, compression, ...)

Enregistre le contenu du DataFrame au format JSON au chemin spécifié.

parquet(path, mode, partitionBy, compression)

Enregistre le contenu du DataFrame au format Parquet au chemin spécifié.

text(path, compression, lineSep)

Enregistre le contenu du DataFrame dans un fichier texte au chemin d'accès spécifié.

csv(path, mode, compression, sep, ...)

Enregistre le contenu du DataFrame au format CSV au chemin spécifié.

xml(path, rowTag, mode, ...)

Enregistre le contenu du DataFrame au format XML dans le chemin spécifié.

orc(path, mode, partitionBy, compression)

Enregistre le contenu du DataFrame au format ORC au chemin spécifié.

excel(path, mode, dataAddress, headerRows)

Enregistre le contenu du **DataFrame** au format Excel au chemin spécifié.

jdbc(url, table, mode, properties)

Enregistre le contenu du DataFrame dans une table de base de données externe via JDBC.

Méthode

Description

mode(saveMode)

Spécifie le comportement lorsque les données ou la table existent déjà.

format(source)

Spécifie la source de données de sortie sous-jacente.

option(key, value)

Ajoute une option de sortie pour la source de données sous-jacente.

options(**options)

Ajoute des options de sortie pour la source de données sous-jacente.

partitionBy(*cols)

Partitionne la sortie par les colonnes données sur le système de fichiers.

bucketBy(numBuckets, col, *cols)

Regroupe la sortie par les colonnes données.

sortBy(col, *cols)

Trie la sortie de chaque compartiment par les colonnes données sur le système de fichiers.

clusterBy(*cols)

Clusters les données par les colonnes données pour optimiser les performances des queries.

save(path, format, mode, partitionBy, **options)

Enregistre le contenu du DataFrame dans une source de données.

insertInto(tableName, overwrite)

Insère le contenu du DataFrame dans la table spécifiée.

saveAsTable(name, format, mode, partitionBy, **options)

Enregistre le contenu du DataFrame en tant que table spécifiée.

json(path, mode, compression, ...)

Enregistre le contenu du DataFrame au format JSON au chemin spécifié.

parquet(path, mode, partitionBy, compression)

Enregistre le contenu du DataFrame au format Parquet au chemin spécifié.

text(path, compression, lineSep)

Enregistre le contenu du DataFrame dans un fichier texte au chemin d'accès spécifié.

csv(path, mode, compression, sep, ...)

Enregistre le contenu du DataFrame au format CSV au chemin spécifié.

xml(path, rowTag, mode, ...)

Enregistre le contenu du DataFrame au format XML dans le chemin spécifié.

orc(path, mode, partitionBy, compression)

Enregistre le contenu du DataFrame au format ORC au chemin spécifié.

excel(path, mode, dataAddress, headerRows)

Enregistre le contenu du **DataFrame** au format Excel au chemin spécifié.

jdbc(url, table, mode, properties)

Enregistre le contenu du DataFrame dans une table de base de données externe via JDBC.

Modes d'enregistrement

La méthode mode() prend en charge les options suivantes :

  • ajouter : Ajoute le contenu de ce DataFrame aux données existantes.
  • Remplacer : remplacer les données existantes.
  • **error** ou **errorifexists** : Lever une exception si les données existent déjà (default).
  • ignorer : Ignorer cette Opération en silence si les données existent déjà.

Exemples

Écriture vers différentes sources de données

Python
# Access DataFrameWriter through DataFrame
df = spark.createDataFrame([{"name": "Alice", "age": 30}])
df.write

# Write to JSON file
df.write.json("path/to/output.json")

# Write to CSV file with options
df.write.option("header", "true").csv("path/to/output.csv")

# Write to Parquet file
df.write.parquet("path/to/output.parquet")

# Write to a table
df.write.saveAsTable("table_name")

Utilisation du format et de la sauvegarde

Python
# Specify format explicitly
df.write.format("json").save("path/to/output.json")

# With options
df.write.format("csv") \
.option("header", "true") \
.option("compression", "gzip") \
.save("path/to/output.csv")

Spécification du mode d'enregistrement

Python
# Overwrite existing data
df.write.mode("overwrite").parquet("path/to/output.parquet")

# Append to existing data
df.write.mode("append").parquet("path/to/output.parquet")

# Ignore if data exists
df.write.mode("ignore").json("path/to/output.json")

# Error if data exists (default)
df.write.mode("error").csv("path/to/output.csv")

Partitionnement des données

Python
# Partition by single column
df.write.partitionBy("year").parquet("path/to/output.parquet")

# Partition by multiple columns
df.write.partitionBy("year", "month").parquet("path/to/output.parquet")

# Partition with bucketing
df.write \
.bucketBy(10, "id") \
.sortBy("age") \
.saveAsTable("bucketed_table")

Écriture dans JDBC

Python
# Write to database table
df.write.jdbc(
url="jdbc:postgresql://localhost:5432/mydb",
table="users",
mode="overwrite",
properties={"user": "myuser", "password": "mypassword"}
)

Chaînage de méthodes

Python
# Chain multiple configuration methods
df.write \
.format("parquet") \
.mode("overwrite") \
.option("compression", "snappy") \
.partitionBy("year", "month") \
.save("path/to/output")

Écriture dans les tables

Python
# Save as managed table
df.write.saveAsTable("my_table")

# Save as managed table with options
df.write \
.mode("overwrite") \
.format("parquet") \
.partitionBy("year") \
.saveAsTable("partitioned_table")

# Insert into existing table
df.write.insertInto("existing_table")

# Insert into existing table with overwrite
df.write.insertInto("existing_table", overwrite=True)