开发者社区> 问答> 正文

如果Spark中的数据帧是不可变的,为什么我们能够使用withColumn()等操作来修改它?

如果Spark中的数据帧是不可变的,为什么我们能够使用withColumn()等操作来修改它?

展开
收起
社区小助手 2018-12-12 13:31:36 2095 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    根据Spark Architecture,DataFrame建立在RDD之上,RDD本质上是不可变的,因此数据帧本质上也是不可变的。

    关于withColumn或任何其他操作,当您在DataFrame上应用此类操作时,它将生成新的数据框而不是更新现有的数据框。

    但是,当您使用动态类型语言的python时,您将覆盖先前引用的值。因此,当您执行以下语句时

    df = df.withColumn()
    它将生成另一个数据帧并将其分配给引用“ df”。

    为了验证相同,您可以使用id()rdd方法获取数据帧的唯一标识符。

    df.rdd.id()

    将为您的数据框提供唯一标识符。

    2019-07-17 23:20:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载