Spark2.1.0——WebUI框架体系

本文深入解析Spark2.1.0的WebUI框架,包括WebUIPage的渲染与JSON生成,WebUITab的定义以及WebUI的整体结构,阐述了各个组件的作用与交互,帮助理解Spark UI的实现机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阅读建议:阅读本文前最好先阅读《Spark2.1.0——SparkUI的实现》一文。

         Spark UI构建在WebUI的框架体系之上,因此应当首先了解WebUI。WebUI定义了一种Web界面展现的框架,并提供返回Json格式数据的Web服务。WebUI用于展示一组标签页,WebUITab定义了标签页的规范。每个标签页中包含着一组页面,WebUIPage定义了页面的规范。我们将首先了解WebUIPage和WebUITab,最后从整体来看WebUI。

WebUIPage的定义

         任何的Web界面往往由多个页面组成,每个页面都将提供不同的内容展示。WebUIPage是WebUI框架体系的页节点,定义了所有页面应当遵循的规范。抽象类WebUIPage的定义见代码清单1。

代码清单1  WebUIPage的定义

private[spark] abstract class WebUIPage(var prefix: String) {

  def render(request: HttpServletRequest): Seq[Node]

  def renderJson(request: HttpServletRequest): JValue = JNothing

}

WebUIPage定义了两个方法。

  • render:渲染页面;
  • renderJson:生成JSON。

WebUIPage在WebUI框架体系中的上一级节点(也可以称为父亲)可以是WebUI或者WebUITab,其成员属性prefix将与上级节点的路径一起构成当前WebUIPage的访问路径。

WebUITab的定义

         有时候Web界面需要将多个页面作为一组内容放置在一起,这时候标签页是常见的展现形式。标签页WebUITab定义了所有标签页的规范,并用于展现一组WebUIPage。抽象类WebUITab的定义见代码清单2。

代码清单2  WebUITab的定义

private[spark] abstract class WebUITab(parent: WebUI, val prefix: String) {

  val pages = ArrayBuffer[WebUIPage]()

  val name = prefix.capitalize



  def attachPage(page: WebUIPage) {

    page.prefix = (prefix + "/" + page.prefix).stripSuffix("/")

    pages += page

  }



  def headerTabs: Seq[WebUITab] = parent.getTabs



  def basePath: String = parent.getBasePath

}

根据代码清单2,可以看到WebUITab有四个成员属性:

  • parent:上一级节点,即父亲。WebUITab的父亲只能是WebUI。
  • prefix:当前WebUITab的前缀。prefix将与上级节点的路径一起构成当前WebUITab的访问路径。
  • pages:当前WebUITab所包含的WebUIPage的缓冲数组。
  • name:当前WebU
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值