Spark作业是什么?

2024-04-03

我已经完成了 Spark 安装并执行了一些设置主节点和工作节点的测试用例。也就是说,我对 Spark 上下文(而不是 SparkContext)中的作业到底意味着什么感到非常困惑。我有以下问题

  • 工作与驱动程序有多么不同。
  • 应用程序本身是驱动程序的一部分?
  • Spark 提交在某种程度上是一项工作吗?

我读了Spark文档 https://spark.apache.org/docs/1.1.0/cluster-overview.html但这件事对我来说仍然不清楚。

话虽如此,我的实现是编写 Spark 作业{以编程方式} 来进行 Spark 提交。

如果可能的话,请帮忙举一些例子。这会很有帮助。

Note:请不要发布火花链接,因为我已经尝试过。尽管这些问题听起来很幼稚,但我仍然需要更清晰的理解。


嗯,术语总是很困难,因为它取决于上下文。在很多情况下,您可以用来“向集群提交作业”,这对于 Spark 来说就是提交驱动程序。

也就是说,Spark 对“工作”有自己的定义,直接来自术语表:

作业 由多个任务组成的并行计算,得到 响应 Spark 操作而生成(例如保存、收集);你会看到的 该术语用在驱动程序日志中。

因此,在这种情况下,假设您需要执行以下操作:

  1. 将包含人员姓名和地址的文件加载到 RDD1 中
  2. 将包含人名和电话的文件加载到 RDD2 中
  3. 按名称连接 RDD1 和 RDD2,得到 RDD3
  4. 在 RDD3 上进行映射,为每个人获取一个漂亮的 HTML 演示卡作为 RDD4
  5. 将 RDD4 保存到文件。
  6. 映射 RDD1 以从地址中提取邮政编码以获得 RDD5
  7. 聚合 RDD5 以获取 RDD6 中每个邮政编码上居住的人数
  8. 收集 RDD6 并将这些统计信息打印到标准输出。

So,

  1. The 驱动程序是整段代码,运行所有 8 个步骤。
  2. 在步骤 5 中生成整个 HTML 卡集是job(很清楚,因为我们正在使用save行动,而不是转变)。与collect在第 8 步
  3. 其他步骤将被组织成stages,每个作业都是一系列阶段的结果。对于简单的事情,作业可以有一个阶段,但需要重新分区数据(例如,第 3 步中的联接)或任何破坏数据局部性的事情通常会导致出现更多阶段。您可以将阶段视为产生中间结果的计算,这些结果实际上可以被持久化。例如,我们可以保留 RDD1,因为我们将多次使用它,从而避免重新计算。
  4. 以上3个基本上都讨论了如何logic给定的算法将会被破坏。相比之下,一个task是一个特定的一条数据它将在给定的执行者上经历给定的阶段。

希望它能让事情变得更清楚;-)

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

Spark作业是什么? 的相关文章

随机推荐