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

Spark中DataFrame转换后原有列的存储机制疑问

Spark DataFrame withColumn 执行后的列数据存储逻辑

执行df = df.withColumn("day", col("songay_xuly").cast("int"))生成新DataFrame后,songay_xuly和ma列并不会复制原df的数据,而是指向原df的底层数据分区,具体逻辑如下:

  • Spark的DataFrame本质是逻辑执行计划的抽象,并非直接存储数据的容器。withColumn操作只是在原df的执行计划上追加了一个新列的生成步骤,完全不会触发实际的数据读取或复制动作。
  • 只有当调用show()、count()、write()这类**行动算子(Action)**时,Spark才会根据完整的执行计划去处理数据。此时原列songay_xuly和ma的数据会被直接复用,不会额外复制一份。
  • 结合DataFrame的不可变性特性:原df的底层数据不会被修改,新df只是基于原计划构建的一个新逻辑视图,所有原列的数据源都指向最初的存储介质(比如HDFS、本地文件等)或上游RDD/DF的分区。

内容的提问来源于stack exchange,提问作者Đức Hân Trần

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:22:04