【问题标题】:Trying to understand the Spark UI jobs tab尝试了解 Spark UI 作业选项卡
【发布时间】:2026-01-19 12:00:01
【问题描述】:

我正在开发一个 spark 程序,我必须在其中加载 avro 数据并对其进行处理。我试图了解如何为 spark 应用程序创建作业 ID。我使用下面的代码行来加载 avro 数据。

sqlContext.read.format("com.databricks.spark.avro").load(路径)

据我所知,作业 ID 将根据程序中遇到的操作创建。我的工作计划每 30 分钟运行一次。当我查看此应用程序的 spark 历史服务器时,我看到为加载操作创建了一个作业 ID。它只是偶尔发生,日志看起来非常好。我正在使用火花 1.6.1

我很想知道加载操作是否会在应用程序中创建新的作业 ID?

【问题讨论】:

    标签: apache-spark spark-avro


    【解决方案1】:

    一般而言,Spark SQL 中的数据加载操作不是惰性的,除非您为 DataFrameReader 提供架构。根据来源范围和影响,可能会有所不同,从简单的元数据访问到完整的数据扫描。

    在这种特殊情况下 it is pretty much limited to file system scana single file access 读取架构。

    【讨论】:

    • 在我的应用程序中,有 2 个加载操作。一个加载 parquet 数据,另一个加载 avro 数据。作业 ID 在 parquet 数据加载操作时创建,但作业 ID 创建看起来与 avro 数据加载操作不一致。有时我在 avro 数据加载操作中看不到作业 ID。我想知道为什么会这样。如果你有一个想法,你能详细说明一下这种行为吗?
    • 我试图找出并调试以了解为什么它不一致并将持久性添加到返回数据帧的加载步骤中。即便如此,Spark UI 中的作业也不一致。