Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Interface die wordt gebruikt om een DataFrame naar externe opslag te schrijven met behulp van de v2-API.
Voor de meeste gebruiksvoorbeelden met Databricks-tabellen en Delta Lake biedt DataFrameWriterV2 krachtigere en flexibele opties dan de oorspronkelijke DataFrameWriter:
- Betere ondersteuning voor tabeleigenschappen
- Meer verfijnde controle over partitionering
- Mogelijkheden voor voorwaardelijke overschrijven
- Ondersteuning voor clustering
- Duidelijkere semantiek voor het maken of vervangen van bewerkingen
Ondersteunt Spark Connect
Syntaxis
Gebruik DataFrame.writeTo(table) deze interface om toegang te krijgen tot deze interface.
Methods
| Methode | Beschrijving |
|---|---|
using(provider) |
Hiermee geeft u een provider voor de onderliggende uitvoergegevensbron. |
option(key, value) |
Voeg een schrijfoptie toe. Als u bijvoorbeeld een beheerde tabel wilt maken: df.writeTo("test").using("delta").option("path", "s3://test").createOrReplace(). |
options(**options) |
Schrijfopties toevoegen. |
tableProperty(property, value) |
Tabeleigenschap toevoegen. Gebruik bijvoorbeeld tableProperty("location", "s3://test") om een externe tabel (niet-beheerd) te maken. |
partitionedBy(col, *cols) |
Partitioneer de uitvoertabel die is gemaakt door create, createOrReplace of vervang deze met behulp van de opgegeven kolommen of transformaties. |
clusterBy(col, *cols) |
Hiermee worden de gegevens geclusterd op basis van de opgegeven kolommen om de queryprestaties te optimaliseren. |
create() |
Maak een nieuwe tabel op basis van de inhoud van het gegevensframe. |
replace() |
Vervang een bestaande tabel door de inhoud van het gegevensframe. |
createOrReplace() |
Maak een nieuwe tabel of vervang een bestaande tabel door de inhoud van het gegevensframe. |
append() |
Voeg de inhoud van het gegevensframe toe aan de uitvoertabel. |
overwrite(condition) |
Overschrijf rijen die overeenkomen met de opgegeven filtervoorwaarde met de inhoud van het gegevensframe in de uitvoertabel. |
overwritePartitions() |
Overschrijf alle partities waarvoor het gegevensframe ten minste één rij bevat met de inhoud van het gegevensframe in de uitvoertabel. |
Examples
Een nieuwe tabel maken
# Create a new table with DataFrame contents
df = spark.createDataFrame([{"name": "Alice", "age": 30}])
df.writeTo("my_table").create()
# Create with a specific provider
df.writeTo("my_table").using("parquet").create()
Gegevens partitioneren
# Partition by single column
df.writeTo("my_table") \
.partitionedBy("year") \
.create()
# Partition by multiple columns
df.writeTo("my_table") \
.partitionedBy("year", "month") \
.create()
# Partition using transform functions
from pyspark.sql.functions import years, months, days
df.writeTo("my_table") \
.partitionedBy(years("date"), months("date")) \
.create()
Tabeleigenschappen instellen
# Add table properties
df.writeTo("my_table") \
.tableProperty("key1", "value1") \
.tableProperty("key2", "value2") \
.create()
Opties gebruiken
# Add write options
df.writeTo("my_table") \
.option("compression", "snappy") \
.option("maxRecordsPerFile", "10000") \
.create()
# Add multiple options at once
df.writeTo("my_table") \
.options(compression="snappy", maxRecordsPerFile="10000") \
.create()
Clusteringgegevens
# Cluster by columns for query optimization
df.writeTo("my_table") \
.clusterBy("user_id", "timestamp") \
.create()
Vervangingsoperaties
# Replace existing table
df.writeTo("my_table") \
.using("parquet") \
.replace()
# Create or replace (safe operation)
df.writeTo("my_table") \
.using("parquet") \
.createOrReplace()
Toevoegbewerkingen
# Append to existing table
df.writeTo("my_table").append()
Bewerkingen overschrijven
from pyspark.sql.functions import col
# Overwrite specific rows based on condition
df.writeTo("my_table") \
.overwrite(col("date") == "2025-01-01")
# Overwrite entire partitions
df.writeTo("my_table") \
.overwritePartitions()
Methodekoppeling
# Combine multiple configurations
df.writeTo("my_table") \
.using("parquet") \
.option("compression", "snappy") \
.tableProperty("description", "User data table") \
.partitionedBy("year", "month") \
.clusterBy("user_id") \
.createOrReplace()