DataFrameWriter sınıfı

Dış depolama sistemlerine (örneğin dosya sistemleri, anahtar-değer depoları vb.) bir DataFrame yazmak için kullanılan arabirim.

Spark Connect'i destekler

Sözdizimi

Bu arabirime erişmek için kullanın DataFrame.write .

Methods

Yöntem Açıklama
mode(saveMode) Veriler veya tablo zaten mevcut olduğunda davranışı belirtir.
format(source) Temel alınan çıkış veri kaynağını belirtir.
option(key, value) Temel alınan veri kaynağı için bir çıkış seçeneği ekler.
options(**options) Temel alınan veri kaynağı için çıkış seçenekleri ekler.
partitionBy(*cols) Çıktıyı dosya sistemindeki belirtilen sütunlara göre bölümler.
bucketBy(numBuckets, col, *cols) Çıkışı verilen sütunlara göre demetler.
sortBy(col, *cols) Her demetteki çıkışı dosya sistemindeki belirli sütunlara göre sıralar.
clusterBy(*cols) Sorgu performansını iyileştirmek için verileri verilen sütunlara göre kümeler.
save(path, format, mode, partitionBy, **options) DataFrame içeriğini bir veri kaynağına kaydeder.
insertInto(tableName, overwrite) DataFrame'in içeriğini belirtilen tabloya ekler.
saveAsTable(name, format, mode, partitionBy, **options) DataFrame'in içeriğini belirtilen tablo olarak kaydeder.
json(path, mode, compression, ...) DataFrame'in içeriğini belirtilen yola JSON biçiminde kaydeder.
parquet(path, mode, partitionBy, compression) DataFrame'in içeriğini belirtilen yola Parquet biçiminde kaydeder.
text(path, compression, lineSep) DataFrame'in içeriğini belirtilen yolda bir metin dosyasına kaydeder.
csv(path, mode, compression, sep, ...) DataFrame içeriğini belirtilen yola CSV biçiminde kaydeder.
xml(path, rowTag, mode, ...) DataFrame'in içeriğini belirtilen yola XML biçiminde kaydeder.
orc(path, mode, partitionBy, compression) DataFrame'in içeriğini belirtilen yola ORC biçiminde kaydeder.
excel(path, mode, dataAddress, headerRows) DataFrame'in içeriğini belirtilen yola excel biçiminde kaydeder.
jdbc(url, table, mode, properties) DataFrame içeriğini JDBC aracılığıyla bir dış veritabanı tablosuna kaydeder.

Kaydetme Modları

mode() yöntemi aşağıdaki seçenekleri destekler:

  • append: Bu DataFrame'in içeriğini var olan verilere ekleyin.
  • üzerine yazma: Var olan verilerin üzerine yaz.
  • error veya errorifexists: Veriler zaten varsa bir özel durum oluşturun (varsayılan).
  • ignore: Veriler zaten varsa bu işlemi sessizce yoksayın.

Örnekler

Farklı veri kaynaklarına yazma

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

Biçimi ve kaydetmeyi kullanma

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

Kaydetme modunu belirtme

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

Verileri bölümleme

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

JDBC'ye yazma

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

Yöntem zincirleme

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

Tablolara yazma

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