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

2024-06-26

这可能是一个愚蠢的问题,源于我的无知。我已经在 PySpark 上工作了几个星期,并没有太多的编程经验。

我的理解是,在 Spark 中,RDD、数据帧和数据集都是不可变的——我再次理解,这意味着您无法更改数据。如果是这样,为什么我们能够使用编辑 Dataframe 的现有列withColumn()?


根据 Spark 架构,DataFrame 构建在本质上不可变的 RDD 之上,因此 Dataframe 本质上也是不可变的。

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

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

df = df.withColumn()

它将生成另一个数据帧并将其分配给引用“df".

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

df.rdd.id()

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

我希望上述解释有所帮助。

Regards,

Neeraj

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • pySpark 映射多列

    我需要能够使用多列比较两个数据帧 pySpark尝试 get PrimaryLookupAttributeValue values from reference table in a dictionary to compare them t
  • Terraform:错误:Kubernetes 集群无法访问:配置无效

    使用 terraform destroy 删除 kubernetes 集群后 我无法再创建它 terraform apply 返回以下错误消息 错误 Kubernetes 集群无法访问 配置无效 否 已提供配置 尝试设置 KUBERNETE
  • C++向量数组运算符计算成本高?

    我一直都知道 C 的丰富抽象会带来一定的计算开销 但我的印象是 一旦应用了正确的编译器优化 这种开销几乎可以忽略不计 我很好奇这种开销到底有多大 所以我编写了一个简单的测试来确定这一点 该测试是一个模板化函数 它接受一个容器变量 为容器中的
  • 检测 UTF-8 编码文本文件中的损坏字符

    我有一个使用错误的字符编码编辑的文本文件 因此当我使用 UTF 8 打开它时 某些字符串中有一些 mojibake 和损坏的字符 哪种脚本语言能够最有效地检测这些损坏的字符 Perl 不是一个选择 我基本上试图找到一种使用脚本扫描文本文件并
  • Laravel 5.1 完成后如何捕获作业队列详细信息?

    在 Laravel 5 1 中 我希望在作业完成时收到通知 并提供有关作业的详细信息 具体来说 user id and customer id 我正在使用Queue after方法中的方法AppServiceProvider作为 Larav
  • 在vba中为图例设置颜色代码

    我在每个工作表中都有数据透视表 我必须对它们进行比较 但每个工作表中图例的颜色都不同 如何设置颜色 例如 如果我的图例条目是 ISO 我希望它始终为 蓝色 如果它是 LAT 我希望它在每张纸中都为 红色 这可以通过操纵来完成Series中的
  • 基类和派生类构造函数的内存分配

    创建派生类对象时首先为哪一个分配空间 是基类构造函数还是派生类构造函数 First 分配 您所询问的内存保留不同于并且先于初始化 执行构造函数 本质上在该内存中设置合适的值 以及 正式的 我们的神圣标准 和实践的不同之处在于大多数派生对象的
  • 在多线程场景中正确锁定 List

    好吧 我只是无法正确理解多线程场景 抱歉再次问类似的问题 我只是在互联网上看到许多不同的 事实 public static class MyClass private static List
  • Heroku 找不到 Django 模板

    我得到了一个TemplateDoesNotExistHeroku 查找我的 html 文件时出错 文件全部在开发服务器上同步 这TEMPLATE DIRS设置被设置为 TEMPLATE DIRS Users jonathanschen Py
  • 从 Firebase Swift 检索信息的好方法

    我和我的朋友正在 swift 上开发一个 IOS 项目 并集成了 新的 Firebase 我们能够写入 Firebase 数据库 但是我们在检索数据时遇到了问题 我们有一个 tableView 控制器 我们希望从 Firebase 数据库填
  • 将 JSON 数据从 Chrome 浏览器扩展发布到 MVC 控制器

    我编写了一个 Chrome 浏览器扩展 它使用 Ajax 将数据发送到 MVC3 控制器 为了确保控制器代码正常工作 我首先编写了一个 Razor 网页来原型化 ajax 代码 该代码在网页中工作 绑定了所有的 JSON 模型 我将其发布到
  • 向量数学,在两个向量之间的平面上查找坐标

    我正在尝试沿着样条线生成 3d 管 我有样条线的坐标 x1 y1 z1 x2 y2 z2 等 您可以在黄色插图中看到 在这些点上 我需要生成圆圈 其顶点将在稍后的体育场连接 这些圆需要垂直于样条线两条线段的 角 才能形成正确的管 请注意 出
  • 使用 React Native 隐藏在 TabBarIOS 后面的内容

    我正在使用 React Native 构建一个 iOS 应用程序 并正在实现一个TabBarIOS 选项卡上的内容似乎流到后面并被栏遮挡 在 xcode 中 我只是取消选中 扩展边缘 框 但不知道如何使用 React Native 来做到这
  • 打开街道地图(pyproj)。如何解决语法问题?

    使用 pyproj 可视化开放街道地图并收到以下错误 gt AppData Local Programs Python Python36 32 lib site packages pyproj crs py 77 gt FutureWarn
  • 如何重新启动 WPF 应用程序?

    如何从代码重新启动 WPF 应用程序 在 Windows 窗体中存在 Application Restart 但出于某种原因 Microsoft 决定不在 WPF 中添加此方法 我讨厌 WPF 和 Windows 窗体之间的不兼容 喜欢 w
  • 将javascript日期分配给html5日期时间本地输入

    DOM
  • 用于二进制数据传输和解码的 websocket

    我正在阅读规范和许多有关 websockets 使用的示例 几乎所有的人都谈论使用 websockets 进行 UTF 8 或 ascii 消息传输 最新的 Hybi websocket 规范要求支持二进制传输 Hybi 规范中的 REQ
  • 在 fxml 中使用自定义控件

    假设我已经对默认值进行了子类化TableView
  • jQuery val 未定义?

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

    这可能是一个愚蠢的问题 源于我的无知 我已经在 PySpark 上工作了几个星期 并没有太多的编程经验 我的理解是 在 Spark 中 RDD 数据帧和数据集都是不可变的 我再次理解 这意味着您无法更改数据 如果是这样 为什么我们能够使用编