You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark写入Delta Table时能否配置使用Parquet Format v2版本?

配置Spark写入Delta Table时指定Parquet版本

结论

可以通过Delta Lake的专属配置参数切换到Parquet 2.0+格式,解决纳秒精度时间戳丢失问题。

具体配置方式

Delta Lake通过控制legacy format开关来切换Parquet版本,禁用旧格式即可启用Parquet 2.0+的特性:

1. 全局Spark配置

在初始化SparkSession或提交任务时添加以下配置:

// Scala 初始化SparkSession示例
val spark = SparkSession.builder()
  .appName("DeltaParquetV2")
  .config("spark.sql.parquet.writeLegacyFormat", "false")
  .config("delta.parquet.writeLegacyFormat", "false")
  .config("spark.sql.parquet.int96TimestampConversion", "false") // 避免时间戳自动转换
  .getOrCreate()

或者通过命令行提交时指定:

spark-submit \
  --conf spark.sql.parquet.writeLegacyFormat=false \
  --conf delta.parquet.writeLegacyFormat=false \
  your-application.jar

2. 单写入任务配置

如果只需要针对特定Delta写入任务生效,可在write阶段指定选项:

df.write
  .format("delta")
  .option("parquet.writeLegacyFormat", "false")
  .save("/path/to/your/delta-table")

注意事项

  • 要求Delta Lake版本≥0.7.0、Spark版本≥3.0.0,这些版本原生支持Parquet 2.0+的纳秒精度时间戳。
  • 确认DataFrame中的时间戳列使用TimestampType,Spark 3.0+默认支持纳秒精度存储。
  • 禁用legacy format后,生成的Parquet文件无法被仅支持Parquet 1.0的旧版本工具读取,需确保下游系统兼容。

内容的提问来源于stack exchange,提问作者Takreem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:22:38