为基础数据源添加输出选项。 有关某些可用选项,请参阅 “选项”。
Syntax
option(key, value)
参数
| 参数 | 类型 | 说明 |
|---|---|---|
key |
str | 选项键。 |
value |
str、int、float 或 bool | 选项值。 |
选项
下表包含一些编写器选项:
| Key | 格式 | 说明 |
|---|---|---|
arrayElementName |
XML | 没有显式名称的数组元素的元素名称。 默认值:item。 适用于 xml(DataFrameWriter)。 |
attributePrefix |
XML | 前面追加到与 XML 属性对应的字段名称的前缀。 默认值:_。 适用于 xml(DataFrameWriter)。 |
avroSchema |
Avro | 完整的 Avro 架构作为 JSON 字符串。 使用此选项可将 Spark SQL 类型转换为特定的 Avro 类型。 适用于 Avro 文件。 |
charToEscapeQuoteEscaping |
CSV | 与引号字符不同时,用于转义转义字符的字符。 默认值: \0 (未启用)。 适用于 csv(DataFrameWriter)。 |
clusterByAuto |
Delta Lake | 是否启用自动液体聚类分析,其中Azure Databricks根据查询模式选择聚类分析列。 仅对 . 有效。mode("overwrite") 不能与模式一起使用 append 。 默认值:false。 在 Databricks Runtime 16.4 及更高版本中可用。 适用于 对表使用液体聚类分析。 |
compression |
CSV、JSON、ORC、Parquet、Text、XML | 编写时要使用的压缩编解码器。 有效值因格式而异。 适用于 csv(DataFrameWriter)、json(DataFrameWriter)、orc(DataFrameWriter)、parquet(DataFrameWriter)、文本(DataFrameWriter)、xml(DataFrameWriter)。 |
dateFormat |
CSV、JSON、XML | 日期列值的格式字符串。 默认值:yyyy-MM-dd。 适用于 csv(DataFrameWriter)、json(DataFrameWriter)、xml(DataFrameWriter)。 |
declaration |
XML | 在每个输出文件的顶部写入的 XML 声明字符串。 设置为空字符串以禁止声明。 默认值:version="1.0" encoding="UTF-8" standalone="yes"。 适用于 xml(DataFrameWriter)。 |
emptyValue |
CSV | 为空(非 null)值编写的字符串。 默认值:""。 适用于 csv(DataFrameWriter)。 |
encoding |
CSV、JSON、XML | 输出文件的字符编码。 默认值:UTF-8。 适用于 csv(DataFrameWriter)、json(DataFrameWriter)、xml(DataFrameWriter)。 |
escape |
CSV | 用于转义带引号值的字符。 默认值:\。 适用于 csv(DataFrameWriter)。 |
escapeQuotes |
CSV | 是否转义带引号字段值内的引号字符。 默认值:true。 适用于 csv(DataFrameWriter)。 |
header |
CSV | 是否将列名称写入输出的第一行。 默认值:false。 适用于 csv(DataFrameWriter)。 |
ignoreLeadingWhiteSpace |
CSV | 是否在写入时从值中剪裁前导空格。 默认值:false。 适用于 csv(DataFrameWriter)。 |
ignoreNullFields |
JSON | 是否省略 JSON 输出中具有 null 值的字段。 默认值:值为 spark.sql.jsonGenerator.ignoreNullFields. 适用于 json (DataFrameWriter)。 |
ignoreTrailingWhiteSpace |
CSV | 是否在写入时从值中剪裁尾随空格。 默认值:false。 适用于 csv(DataFrameWriter)。 |
lineSep |
CSV、JSON、文本 | 记录之间使用的行分隔符字符串。 默认值:\n。 适用于 csv(DataFrameWriter)、json(DataFrameWriter)、文本(DataFrameWriter)。 |
mergeSchema |
Delta Lake | 是否为写入操作启用架构演变。 源 DataFrame 中的新列将添加到目标表架构。 适用于批处理和流式处理追加。 适用于 更新表架构。 |
nullValue |
CSV | 为 null 值编写的字符串。 默认值:""。 适用于 csv(DataFrameWriter)。 |
nullValue |
XML | 为 null 值编写的字符串。 默认值:null。 如果设置为 nullnull 字段,则省略 null 字段的属性和子元素。 适用于 xml(DataFrameWriter)。 |
overwriteSchema |
Delta Lake | 是否在覆盖时替换表架构和分区。 需要 mode("overwrite") 没有 replaceWhere。 不能与 partitionOverwriteMode 一起使用。 适用于 更新表架构。 |
partitionOverwriteMode |
Delta Lake | 分区覆盖模式。 将其设置为 dynamic 仅覆盖包含新数据的分区,使所有其他分区保持不变。 旧模式;无服务器计算或 Databricks SQL 不支持。 适用于 选择性地使用 Delta Lake 覆盖数据。 |
quote |
CSV | 用于引用包含分隔符的字段值的字符。 默认值:"。 适用于 csv(DataFrameWriter)。 |
quoteAll |
CSV | 是否将所有字段值括在引号中,而不考虑内容。 默认值:false。 适用于 csv(DataFrameWriter)。 |
recordName |
Avro | 输出 Avro 架构中的顶级记录名称。 默认值:topLevelRecord。 适用于 Avro 文件。 |
recordNamespace |
Avro | 输出 Avro 架构中顶级记录的命名空间。 默认值:""。 适用于 Avro 文件。 |
replaceWhere |
Delta Lake | 谓词表达式。 以原子方式仅覆盖与谓词匹配的记录。 适用于 选择性地使用 Delta Lake 覆盖数据。 |
rootTag |
XML | 包装输出中所有行元素的根元素标记。 默认值:ROWS。 适用于 xml(DataFrameWriter)。 |
rowTag |
XML | 表示输出中的行的元素标记。 默认值:ROW。 适用于 xml(DataFrameWriter)。 |
sep |
CSV | 字段分隔符字符。 默认值:,。 适用于 csv(DataFrameWriter)。 |
timestampFormat |
CSV、JSON、XML | 时间戳列值的格式字符串。 默认值:yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]。 适用于 csv(DataFrameWriter)、json(DataFrameWriter)、xml(DataFrameWriter)。 |
txnAppId |
Delta Lake | 用于标识应用程序中幂等写入 foreachBatch 操作的应用程序的唯一字符串。 与 一 txnVersion 起使用,确保对多个 Delta Lake 表进行恰好一次的写入。
foreachBatch适用于幂等表写入。 |
txnVersion |
Delta Lake | 单调增加的数字,用作操作中幂等写入的 foreachBatch 事务版本。 与 一 txnAppId 起使用,确保对多个 Delta Lake 表进行恰好一次的写入。
foreachBatch适用于幂等表写入。 |
userMetadata |
Delta Lake,Apache Iceberg | 追加到写入操作的提交元数据中的用户定义的字符串。 在 . 的 DESCRIBE HISTORY输出中可见 适用于 使用自定义元数据扩充表。 |
validateName |
XML | 如果列名不是有效的 XML 元素标识符,是否引发异常。 默认值:true。 适用于 xml(DataFrameWriter)。 |
valueTag |
XML | 用于 XML 元素中也具有属性或子元素的字符数据的字段名称。 默认值:_VALUE。 适用于 xml(DataFrameWriter)。 |
退货
DataFrameWriter
示例
使用选项集将数据帧写入 CSV 文件中 nullValue 。
import tempfile
with tempfile.TemporaryDirectory(prefix="option") as d:
df = spark.createDataFrame([(100, None)], "age INT, name STRING")
df.write.option("nullValue", "Alice").mode("overwrite").format("csv").save(d)
spark.read.schema(df.schema).format('csv').load(d).show()
# +---+------------+
# |age| name|
# +---+------------+
# |100|Alice|
# +---+------------+