Share via


DataFrameWriter-klasse

Interface die wordt gebruikt voor het schrijven van een DataFrame naar externe opslagsystemen (bijvoorbeeld bestandssystemen, sleutel-waardearchieven, enzovoort).

Ondersteunt Spark Connect

Syntaxis

Gebruik DataFrame.write deze interface om toegang te krijgen tot deze interface.

Methods

Methode Beschrijving
mode(saveMode) Hiermee geeft u het gedrag op wanneer gegevens of tabellen al bestaan.
format(source) Hiermee geeft u de onderliggende uitvoergegevensbron.
option(key, value) Hiermee voegt u een uitvoeroptie toe voor de onderliggende gegevensbron.
options(**options) Hiermee voegt u uitvoeropties toe voor de onderliggende gegevensbron.
partitionBy(*cols) Partitioneert de uitvoer door de opgegeven kolommen in het bestandssysteem.
bucketBy(numBuckets, col, *cols) Buckets van de uitvoer door de opgegeven kolommen.
sortBy(col, *cols) Hiermee sorteert u de uitvoer in elke bucket op de opgegeven kolommen in het bestandssysteem.
clusterBy(*cols) Hiermee worden de gegevens geclusterd op basis van de opgegeven kolommen om de queryprestaties te optimaliseren.
save(path, format, mode, partitionBy, **options) Hiermee wordt de inhoud van het DataFrame opgeslagen in een gegevensbron.
insertInto(tableName, overwrite) Hiermee voegt u de inhoud van het DataFrame toe aan de opgegeven tabel.
saveAsTable(name, format, mode, partitionBy, **options) Slaat de inhoud van het DataFrame op als de opgegeven tabel.
json(path, mode, compression, ...) Hiermee wordt de inhoud van het DataFrame opgeslagen in JSON-indeling op het opgegeven pad.
parquet(path, mode, partitionBy, compression) Hiermee wordt de inhoud van het DataFrame opgeslagen in Parquet-indeling op het opgegeven pad.
text(path, compression, lineSep) Hiermee wordt de inhoud van het DataFrame opgeslagen in een tekstbestand op het opgegeven pad.
csv(path, mode, compression, sep, ...) Hiermee wordt de inhoud van het DataFrame opgeslagen in CSV-indeling op het opgegeven pad.
xml(path, rowTag, mode, ...) Hiermee wordt de inhoud van het DataFrame opgeslagen in XML-indeling op het opgegeven pad.
orc(path, mode, partitionBy, compression) Hiermee wordt de inhoud van het DataFrame opgeslagen in ORC-indeling op het opgegeven pad.
excel(path, mode, dataAddress, headerRows) Hiermee wordt de inhoud van het DataFrame opgeslagen in excel-indeling op het opgegeven pad.
jdbc(url, table, mode, properties) Hiermee wordt de inhoud van het DataFrame opgeslagen in een externe databasetabel via JDBC.

Modi opslaan

De mode() methode ondersteunt de volgende opties:

  • toevoegen: Inhoud van dit DataFrame toevoegen aan bestaande gegevens.
  • overschrijven: bestaande gegevens overschrijven.
  • fout of errorifexists: genereert een uitzondering als er al gegevens bestaan (standaard).
  • negeren: negeer deze bewerking op de achtergrond als er al gegevens bestaan.

Examples

Schrijven naar verschillende gegevensbronnen

# 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")

Opmaak gebruiken en opslaan

# 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")

Opslaansmodus opgeven

# 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")

Gegevens partitioneren

# 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")

Schrijven naar JDBC

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

Methodekoppeling

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

Schrijven naar tabellen

# 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)