Skip to content

[AURON #1409] Introduce Spark UI for auron#1410

Merged
zuston merged 2 commits intoapache:masterfrom
guixiaowen:build_info
Oct 13, 2025
Merged

[AURON #1409] Introduce Spark UI for auron#1410
zuston merged 2 commits intoapache:masterfrom
guixiaowen:build_info

Conversation

@guixiaowen
Copy link
Contributor

@guixiaowen guixiaowen commented Oct 7, 2025

Which issue does this PR close?

Closes #1409

Rationale for this change

Display Auron's build information on the Spark UI.

What changes are included in this PR?

  1. Add a parameter to enable or disable this feature: spark.auron.ui.enabled.
  2. Record and parse Auron's build information.
  3. Render the Spark UI page.
  4. When initializing the Spark session, add the new page through the UI settings.

Are there any user-facing changes?

Add a new spark.auron.ui.enabled parameter.

How was this patch tested?

1. the Spark application is running
When the Spark application is running, the Spark UI will display AURON SQL / DataFrame, showing Auron’s build information.
The information displayed in the Spark UI is as follows:
Image

2. after the Spark application ends
After the Spark application ends, the information can be viewed through the Spark History Server.
You only need to package the auron-spark-ui project into a JAR and integrate it with the Spark History Server, so that the information can be viewed through the Spark History Server after the job finishes.
eg:
auron-spark-ui_2.12-7.0.0-SNAPSHOT.jar to shs jars

The information displayed in the Spark UI from Spark history server is as follows:

Image

@guixiaowen guixiaowen marked this pull request as draft October 7, 2025 07:17
@guixiaowen guixiaowen force-pushed the build_info branch 3 times, most recently from 477bc3e to 0a0a756 Compare October 7, 2025 12:22
@guixiaowen guixiaowen marked this pull request as ready for review October 7, 2025 12:52
<relativePath>../pom.xml</relativePath>
</parent>

<artifactId>auron-spark-ui_${scalaVersion}</artifactId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for contributing this PR! I think we should add a name tag here — similar to what Apache Aurion Spark UI does — so that the summary information after compilation is clearer and more user-friendly.

#1414 Shows the summary information after compilation.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for contributing this PR! I think we should add a name tag here — similar to what Apache Aurion Spark UI does — so that the summary information after compilation is clearer and more user-friendly.

#1414 Shows the summary information after compilation.

@slfan1989 Thanks, Lun, for reviewing the code. I also agree that it should be modified according to #1414. After #1414 is merged, I will make further changes based on it.

@cxzl25
Copy link
Contributor

cxzl25 commented Oct 8, 2025

Because adding UI in this PR, screenshots can be provided in the description of PR.

@guixiaowen
Copy link
Contributor Author

Because adding UI in this PR, screenshots can be provided in the description of PR.

@cxzl25 Thank you very much for reviewing this PR. I’ve added the UI screenshots in the issue. Thanks again!

Copy link
Member

@zuston zuston left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall lgtm. Left some minor comments

This is the good start for better observability when using the Auron

}
content ++=
<script>
function clickDetail(details) {{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need this? If setting the class with collapse , it looks the operation of collapse will work

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need this? If setting the class with collapse , it looks the operation of collapse will work

@zuston z Thank you very much for reviewing the code. This part is indeed unnecessary, and I’ve removed it.

<br/>
</div>

UIUtils.headerSparkPage(request, "Auron SQL / DataFrame", summary ++ content, parent)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auron SQL / DataFrame -> Auron is enough?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Auron SQL / DataFrame -> Auron is enough?

@zuston z Thank you very much for reviewing the code. It has been updated.

}

private def onSQLExecutionStart(event: SparkListenerSQLExecutionStart): Unit = {
executionIdToDescription.put(event.executionId, event.description)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why we need this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why we need this?

@zuston Yes, it is Yes, this is not needed here.

with Logging {
private val executionIdToDescription = new mutable.HashMap[Long, String]

kvstore.addTrigger(classOf[SQLExecutionUIData], conf.get[Int](UI_RETAINED_EXECUTIONS)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this right? The SQLExecutionUIData should not be managed by this calss

extends SparkUITab(sparkUI, "auron")
with Logging {

override val name = "AURON SQL / DataFrame"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AURON is enough?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AURON is enough?

@zuston Thank you very much for reviewing the code. It has been updated.

@guixiaowen
Copy link
Contributor Author

Overall lgtm. Left some minor comments

This is the good start for better observability when using the Auron

@zuston

Overall lgtm. Left some minor comments

This is the good start for better observability when using the Auron

@zuston Thank you very much for reviewing the code.

@guixiaowen guixiaowen marked this pull request as draft October 10, 2025 04:55
@guixiaowen guixiaowen marked this pull request as ready for review October 10, 2025 10:47
Copy link
Member

@zuston zuston left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm now. I will merge this after 12 hours if no one reject. cc @cxzl25 do you want to take a look?

@zuston zuston changed the title [AURON #1409]Support displaying Auron build info in Spark UI [AURON #1409] Introduce Spark UI for auron Oct 11, 2025
@zuston zuston merged commit ee243ad into apache:master Oct 13, 2025
84 checks passed
@zuston
Copy link
Member

zuston commented Oct 13, 2025

Merged. tks @guixiaowen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support displaying Auron build info in Spark UI

4 participants