Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интерфейс, используемый для записи кадра данных во внешние системы хранения (например, файловых систем, хранилищ ключей и т. д.).
Поддержка Spark Connect
Синтаксис
Используется DataFrame.write для доступа к этому интерфейсу.
Методы
| Метод | Описание |
|---|---|
mode(saveMode) |
Указывает поведение, когда данные или таблица уже существуют. |
format(source) |
Указывает базовый источник выходных данных. |
option(key, value) |
Добавляет параметр вывода для базового источника данных. |
options(**options) |
Добавляет параметры вывода для базового источника данных. |
partitionBy(*cols) |
Секционирует выходные данные по заданным столбцам в файловой системе. |
bucketBy(numBuckets, col, *cols) |
Сегментирует выходные данные по заданным столбцам. |
sortBy(col, *cols) |
Сортирует выходные данные в каждом контейнере по заданным столбцам файловой системы. |
clusterBy(*cols) |
Кластеризация данных по заданным столбцам для оптимизации производительности запросов. |
save(path, format, mode, partitionBy, **options) |
Сохраняет содержимое кадра данных в источник данных. |
insertInto(tableName, overwrite) |
Вставляет содержимое кадра данных в указанную таблицу. |
saveAsTable(name, format, mode, partitionBy, **options) |
Сохраняет содержимое кадра данных в виде указанной таблицы. |
json(path, mode, compression, ...) |
Сохраняет содержимое кадра данных в формате JSON по указанному пути. |
parquet(path, mode, partitionBy, compression) |
Сохраняет содержимое кадра данных в формате Parquet по указанному пути. |
text(path, compression, lineSep) |
Сохраняет содержимое кадра данных в текстовом файле по указанному пути. |
csv(path, mode, compression, sep, ...) |
Сохраняет содержимое кадра данных в формате CSV по указанному пути. |
xml(path, rowTag, mode, ...) |
Сохраняет содержимое кадра данных в формате XML по указанному пути. |
orc(path, mode, partitionBy, compression) |
Сохраняет содержимое кадра данных в формате ORC по указанному пути. |
excel(path, mode, dataAddress, headerRows) |
Сохраняет содержимое кадра данных в формате Excel по указанному пути. |
jdbc(url, table, mode, properties) |
Сохраняет содержимое кадра данных во внешнюю таблицу базы данных с помощью JDBC. |
Режимы сохранения
Метод mode() поддерживает следующие параметры:
- добавление содержимого этого кадра данных к существующим данным.
- перезапись: перезаписать существующие данные.
- ошибкаили ошибка: исключение, если данные уже существуют (по умолчанию).
- игнорируйте эту операцию, если данные уже существуют.
Примеры
Запись в разные источники данных
# 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")
Использование формата и сохранения
# 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")
Указание режима сохранения
# 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")
Секционирование данных
# 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
# Write to database table
df.write.jdbc(
url="jdbc:postgresql://localhost:5432/mydb",
table="users",
mode="overwrite",
properties={"user": "myuser", "password": "mypassword"}
)
Цепочка методов
# Chain multiple configuration methods
df.write \
.format("parquet") \
.mode("overwrite") \
.option("compression", "snappy") \
.partitionBy("year", "month") \
.save("path/to/output")
Запись в таблицы
# 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)