Kelas DataFrameWriter

Antarmuka yang digunakan untuk menulis DataFrame ke sistem penyimpanan eksternal (misalnya sistem file, penyimpanan nilai kunci, dll).

Mendukung Spark Connect

Sintaksis

Gunakan DataFrame.write untuk mengakses antarmuka ini.

Metode

Metode Deskripsi
mode(saveMode) Menentukan perilaku ketika data atau tabel sudah ada.
format(source) Menentukan sumber data output yang mendasar.
option(key, value) Menambahkan opsi output untuk sumber data yang mendasar.
options(**options) Menambahkan opsi output untuk sumber data yang mendasar.
partitionBy(*cols) Mempartisi output oleh kolom yang diberikan pada sistem file.
bucketBy(numBuckets, col, *cols) Bucket output oleh kolom yang diberikan.
sortBy(col, *cols) Mengurutkan output di setiap wadah menurut kolom yang diberikan pada sistem file.
clusterBy(*cols) Kluster data menurut kolom yang diberikan untuk mengoptimalkan performa kueri.
save(path, format, mode, partitionBy, **options) Menyimpan konten DataFrame ke sumber data.
insertInto(tableName, overwrite) Menyisipkan konten DataFrame ke tabel yang ditentukan.
saveAsTable(name, format, mode, partitionBy, **options) Menyimpan konten DataFrame sebagai tabel yang ditentukan.
json(path, mode, compression, ...) Menyimpan konten DataFrame dalam format JSON pada jalur yang ditentukan.
parquet(path, mode, partitionBy, compression) Menyimpan konten DataFrame dalam format Parquet pada jalur yang ditentukan.
text(path, compression, lineSep) Menyimpan konten DataFrame dalam file teks di jalur yang ditentukan.
csv(path, mode, compression, sep, ...) Menyimpan konten DataFrame dalam format CSV pada jalur yang ditentukan.
xml(path, rowTag, mode, ...) Menyimpan konten DataFrame dalam format XML pada jalur yang ditentukan.
orc(path, mode, partitionBy, compression) Menyimpan konten DataFrame dalam format ORC pada jalur yang ditentukan.
excel(path, mode, dataAddress, headerRows) Menyimpan konten DataFrame dalam format excel di jalur yang ditentukan.
jdbc(url, table, mode, properties) Menyimpan konten DataFrame ke tabel database eksternal melalui JDBC.

Mode Simpan

Metode ini mode() mendukung opsi berikut:

  • tambahkan: Tambahkan konten DataFrame ini ke data yang sudah ada.
  • timpa: Timpa data yang ada.
  • error atau errorifexists: Melemparkan pengecualian jika data sudah ada (default).
  • abaikan: Abaikan operasi ini secara diam-diam jika data sudah ada.

Examples

Menulis ke sumber data yang berbeda

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

Menggunakan format dan menyimpan

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

Menentukan mode simpan

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

Mempartisi data

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

Menulis ke JDBC

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

Penautan metode

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

Menulis ke tabel

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