Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozhraní používané k zápisu datového rámce do externího úložiště pomocí rozhraní API v2
Pro většinu případů použití s tabulkami Databricks a Delta Lake poskytuje DataFrameWriterV2 výkonnější a flexibilnější možnosti než původní Objekt DataFrameWriter:
- Lepší podpora vlastností tabulky
- Podrobnější kontrola nad dělením
- Možnosti podmíněného přepsání
- Podpora clusteringu
- Jasnější sémantika pro operace vytvoření nebo nahrazení
Podporuje Spark Connect.
Syntaxe
Používá DataFrame.writeTo(table) se pro přístup k tomuto rozhraní.
Methods
| Metoda | Description |
|---|---|
using(provider) |
Určuje zprostředkovatele pro podkladový výstupní zdroj dat. |
option(key, value) |
Přidání možnosti zápisu Chcete-li například vytvořit spravovanou tabulku: df.writeTo("test").using("delta").option("path", "s3://test").createOrReplace(). |
options(**options) |
Přidání možností zápisu |
tableProperty(property, value) |
Přidat vlastnost tabulky Slouží tableProperty("location", "s3://test") například k vytvoření tabulky EXTERNAL (nespravované). |
partitionedBy(col, *cols) |
Rozdělte výstupní tabulku vytvořenou vytvořením, createOrReplace nebo nahraďte pomocí daných sloupců nebo transformací. |
clusterBy(col, *cols) |
Seskupí data podle daných sloupců za účelem optimalizace výkonu dotazů. |
create() |
Vytvořte novou tabulku z obsahu datového rámce. |
replace() |
Nahraďte existující tabulku obsahem datového rámce. |
createOrReplace() |
Vytvořte novou tabulku nebo nahraďte existující tabulku obsahem datového rámce. |
append() |
Připojte obsah datového rámce k výstupní tabulce. |
overwrite(condition) |
Přepište řádky odpovídající dané podmínce filtru s obsahem datového rámce ve výstupní tabulce. |
overwritePartitions() |
Přepište všechny oddíly, pro které datový rámec obsahuje alespoň jeden řádek s obsahem datového rámce ve výstupní tabulce. |
Příklady
Vytvoření nové tabulky
# 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()
Dělení dat
# 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()
Nastavení vlastností tabulky
# Add table properties
df.writeTo("my_table") \
.tableProperty("key1", "value1") \
.tableProperty("key2", "value2") \
.create()
Použití možností
# 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()
Data clusteringu
# Cluster by columns for query optimization
df.writeTo("my_table") \
.clusterBy("user_id", "timestamp") \
.create()
Operace nahrazení
# Replace existing table
df.writeTo("my_table") \
.using("parquet") \
.replace()
# Create or replace (safe operation)
df.writeTo("my_table") \
.using("parquet") \
.createOrReplace()
Operace připojení
# Append to existing table
df.writeTo("my_table").append()
Přepsání operací
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()
Řetězení metod
# Combine multiple configurations
df.writeTo("my_table") \
.using("parquet") \
.option("compression", "snappy") \
.tableProperty("description", "User data table") \
.partitionedBy("year", "month") \
.clusterBy("user_id") \
.createOrReplace()