Spark.read.csv() 是一个关于转换的操作吗

2023-11-24

Bill在《Spark权威指南》一书中说,阅读是一种转变,而且是一种狭义的转变,

现在,如果我运行下面的 Spark 代码并尝试查看 Spark UI,我会看到创建的作业df = spark.read.csv("path/to/file")

现在根据我的理解,工作是一个被称为的动作。另外,如果我在读取 CSV 时尝试输入一些选项,我会在 Spark UI 中看到另外一项作业,因此,例如,如果我们运行以下代码,则 Spark UI 中会有 2 个作业df = spark.read.option("inferSchema", "true").csv("path/to/file")

所以我的问题是如果spark.read这是一次转变,为什么它会创造就业机会?


根据您提供的参数,转换(尤其是读取操作)可以以两种方式运行。

  1. 延迟评估 --> 仅当调用操作时才会执行
  2. 热切评估 --> 将触发作业进行一些初步评估

如果是 read.csv()

  • 如果在没有定义模式的情况下调用它并且 inferSchema 被禁用,它会将列确定为字符串类型,并且仅读取第一行来确定名称(如果 heade=True,否则给出默认列名称)和字段数。基本上它执行限制为 1 的收集操作 --> 这就是为什么你可以看到第一个作业

您可以在 Spark UI 中看到下面的 WholeStageCodeGen,如下所示:

enter image description here

您还可以看到如下的物理计划:

enter image description here

  • 现在,如果您指定 inferSchema=True,则将首先触发上面的作业,并且将触发另一个作业,该作业将扫描整个记录以确定模式 --> 这就是为什么您能够在 Spark UI 中看到两个作业

For second job , aggregated metrics by executor in Spark UI will lokk like this (highlighted the number of records read): enter image description here

  • 现在,如果您通过向 read.csv() 的“schema”参数提供 StructType() 架构对象来显式指定架构,那么您可以看到此处不会触发任何作业。这是因为,我们已经明确提供了列数和类型,并且 Spark 目录将存储该信息,现在不需要扫描文件来获取该信息。这将在调用操作时延迟验证
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark.read.csv() 是一个关于转换的操作吗 的相关文章

随机推荐

  • 手机间隙相机方向

    我使用 Phone Gap 版本开发了一个应用程序0 9 3 当我在应用程序中打开相机时 它始终以横向模式打开 并且在捕获时 图像以横向格式返回 如何将相机模式更改为纵向 navigator camera getPicture onsucc
  • 命名空间 * 已包含 * 的定义

    我在 ASP NET Web 应用程序中创建了单独的文件夹和页面 当我构建解决方案时 我收到错误 The Namespace MyApp already contains a defintion for VDS 这是VDS Master c
  • 逗号的左操作数没有作用?

    我在处理此警告消息时遇到了一些问题 它是在模板容器类中实现的 int k 0 l 0 for k index 1 l 0 k lt sizeC l lt sizeC index k l elements k arryCpy l delete
  • Path.将绝对路径字符串与相对路径字符串组合

    我正在尝试使用相对路径加入 Windows 路径Path Combine 然而 Path Combine C blah bling 回报C blah bling代替C bling 有谁知道如何在不编写我自己的相对路径解析器的情况下完成此任务
  • 使用 Numpy 数组作为查找表

    我有一个从 csv 文件读取的 Numpy 数据的二维数组 每行代表一个数据点 最后一列包含一个 键 该 键 唯一对应于另一个 Numpy 数组 即 查找表 中的 键 将第一个表中的行与第二个表中的值相匹配的最佳 最 Numpythonic
  • 取消按键事件

    我怎样才能返回密钥 意思是如果我只想在文本框中只允许整数值 我怎样才能不允许用户不输入非整数 关于 KeyPress事件 我知道还有其他方法 例如表达式来匹配字符串值 但我不想为文本框分配无效值 if value gt 0 a value
  • AudioManager的底层流类型有什么区别?

    有几种流类型音频管理器 它们在低水平上有何不同 是否可以使用例如AudioManager STREAM MUSIC 阻止输入麦克风流 或者是其他东西 最显着的区别之一是音量控制 As the document也就是说 我们可以分别为每个流设
  • 命名空间内的方法c#

    有没有什么方法可以调用命名空间内的函数 而无需在 C 中声明类 例如 如果我有 2 个完全相同的方法 并且应该在我的所有 C 项目中使用 有没有什么方法可以将这些函数放入 dll 中 然后在顶部说 Using myTwoMethods 并启
  • 为什么我的主机 (softsyshosting.com) 不能支持 BeginRequest 和 EndRequest 事件处理程序?

    我听说了 Softsys Hosting 的一些优点 因此我决定将我的 ASP NET MVC 解决方案转移给他们 但它不会在他们身上运行 我能够将问题查明到我的 BeginRequest 事件处理程序 如果我有它们 我会得到一个错误 这是
  • 寻找数据库版本控制的解决方案

    问题描述 在我们的项目中 我们有一个 生产数据库 和许多 开发人员 我们想知道如何管理和安装这些更改 我们已经有了一些程序 但需要花费大量时间 有时还会出现错误 我们不能丢失数据 所以我们不能使用 删除表 我们只能使用 alter tabl
  • 如何在 PHP 中对数字进行四舍五入?

    我需要将所有非整数四舍五入到最接近的整数 无论 小数点后的数字是否 gt 5 您可以使用ceil value PHP 中的四舍五入函数 同样你可以利用floor 用于向下舍入
  • 如何为包含 List> 的类实现 Parcelable?

    我有一个工作Parcelable我的 Parcelable 类中的所有字段的实现 除了List
  • 从“mysqli->prepare”导出“query”

    是否可以导出格式化的查询mysqli prepare and bind param Example
  • 我的应用程序自行重新启动,日志显示 ChimeraModuleLdr:模块配置已更改,由于模块而强制重新启动

    我正在测试我的应用程序 我看到它自行重启 这真的很奇怪 我看了又看日志 除了这一行之外我找不到任何奇怪的东西ChimeraModuleLdr Module config changed forcing restart due to modu
  • 如何手动重启Jenkins?

    这个问题的答案是社区努力 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我刚刚开始与詹金斯合作 遇到了一个问题 安装几个插件后 它说需要重新启动并进入 关闭 模式 但从未重新启动 如何手动重启 要手动重新启动 Jenkins 您可以
  • MSIL - 如何从 MSIL 调用私有方法?

    我正在编写一个 弱事件工厂 代码将任何委托转换为具有相同签名的新委托 但在目标上实现 WeakReference 我使用 MSIL 来避免调用 Delegate CreateDelegate 其性能已显示很慢 弱引用代表完美工作只要底层方法
  • SQL - COALESCE 和 ISNULL 之间的区别? [复制]

    这个问题在这里已经有答案了 COALESCE 和 ISNULL 之间有什么实际区别 在 SQL 连接中避免 NULL 值时 最好使用哪一个 Thanks 比较 COALESCE 和 ISNULL ISNULL 函数和 COALESCE 表达
  • R中求对称差(交集相反)的函数?

    问题 我有两个不同长度的字符串向量 每个向量都有一组不同的字符串 我想找到一个向量中但不在两个向量中的字符串 那就是对称差异 Analysis 我看了一下函数setdiff 但其输出取决于向量的考虑顺序 我找到了自定义函数外门 但该函数要求
  • 从四元数到欧拉角以及反向转换不正确

    我正在将角度轴表示转换为欧拉角 我决定检查并确保从转换中获得的欧拉角将返回到原始轴角 我打印出这些值 但它们不匹配 我读过了http forum onlineconversion com showthread php t 5408 and
  • Spark.read.csv() 是一个关于转换的操作吗

    Bill在 Spark权威指南 一书中说 阅读是一种转变 而且是一种狭义的转变 现在 如果我运行下面的 Spark 代码并尝试查看 Spark UI 我会看到创建的作业df spark read csv path to file 现在根据我