Apache Zeppelin 显示系统完全指南:%text、%html、%markdown、%table 与 %network 深度解析
数据分析数据可视化大数据后端【免费下载链接】zeppelinWeb-based notebook that enables>项目地址https://gitcode.com/gh_mirrors/zeppelin1/zeppelin点击查看免费下载导读Apache Zeppelin 内置了一套「显示系统」Display System用于决定解释器Interpreter返回的输出在 Notebook 段落中如何渲染。默认情况下Zeppelin 用%text将解释器响应以纯文本打印而本文要介绍的%html、%markdown、%table与%network则分别提供了 HTML 渲染、Markdown 排版含数学公式、带内置可视化的表格以及属性图Property Graph网络可视化能力。读完本文你将掌握 Zeppelin 各类显示指令的触发方式、数据格式约定、与源码实现相对应的底层原理并能在 Spark 等解释器中直接产出可交互的可视化输出。本文内容以仓库文档 docs/usage/display_system/basic.md 为骨架并结合zeppelin-interpreter模块的源码进行佐证与扩充。显示系统是什么一次输出多种渲染在 Zeppelin 的段落Paragraph中解释器执行代码后返回结果结果会被组织成「结果类型」Type。在源码层面这些类型定义于 InterpreterResult.java 的枚举Typepublic enum Type { TEXT, // 纯文本 HTML, // HTML ANGULAR, // Angular 动态内容配合 zeppelinContext 使用 TABLE, // 表格 IMG, // 图片 SVG, // SVG 矢量图 NULL, // 空 NETWORK // 属性图网络 }在段落里输入%text、%html、%markdown、%table、%network等指令其实是在告诉解释器「接下来的内容请按该类型处理」。这些指令的解析发生在 InterpreterOutput.java 的write(int b)方法中当一行以%开头时输出流会累积该行的指令前缀并与InterpreterResult.Type的枚举值转为小写逐一比对命中即切换当前输出的类型setType(type)。也就是说同一个段落的输出中可以通过换行分隔依次切换到多个不同的显示系统。关键特性显示系统与后端解释器无关backend independent。无论段落跑的是 Spark、Python、SQL 还是 Shell只要其输出符合对应的格式约定前端都能按指定类型渲染。%text默认的纯文本输出Zeppelin 默认将解释器的响应以纯文本形式打印使用的是text显示系统。即如果段落输出没有携带任何显示指令或仅以%text声明内容会按等宽纯文本展示适合打印日志、调试信息、命令输出等场景。可以显式声明使用text显示系统%text Hello World源码佐证在 InterpreterOutput.java 的getCurrentOutputForWriting()中当输出流尚未创建任何结果消息时会默认setType(InterpreterResult.Type.TEXT)——这从实现层面印证了「纯文本是默认显示系统」。%html把输出当作 HTML 渲染使用%html指令Zeppelin 会把后续输出内容当作 HTML 文档片段渲染到段落中。这常用于输出富文本、自定义样式、嵌入图表脚本或 Web 组件。%html h1Zeppelin HTML Display System/h1 p这是一段由 strong%html/strong 渲染的内容。/p示例截图display_html.png展示了%html输出的效果docs/assets/themes/zeppelin/img/screenshots/display_html.png。值得注意的实现细节Markdown 解释器Markdown.java在完成 Markdown 解析后正是通过return new InterpreterResult(Code.SUCCESS, %html html);将渲染结果以%html形式交给前端——%html是众多高级显示系统的底层承载者。此外Markdown 解释器还会做输入净化sanitizeInput过滤script等不安全标签与onclick事件属性防止 XSS 风险。%markdownMarkdown 排版与数学公式%markdown指令把段落输出渲染为 Markdown支持标题、列表、代码块、表格、链接等标准语法。%markdown # 标题 - 列表项 1 - 列表项 2数学表达式支持%html与%markdown显示系统会自动通过 MathJax 格式化数学表达式。Zeppelin 使用两种分隔符\( ... \)行内公式INLINE EXPRESSION$$ ... $$块级公式BLOCK EXPRESSION。例如%markdown 行内公式\( e^{i\pi} 1 0 \) 块级公式 $$ \int_0^\infty e^{-x^2} dx \frac{\sqrt{\pi}}{2} $$渲染效果见截图docs/assets/themes/zeppelin/img/screenshots/display_formula.png。这对数据科学笔记中书写算法推导、公式说明非常实用。从源码看%markdown指令本身由 Zeppelin 的解释器框架解析与%text、%html相同路径而独立的markdown解释器markdown/src/main/java/org/apache/zeppelin/markdown/则提供了两种解析实现基于 flexmark 的 FlexmarkParser.java 与基于 markdown4j 的 Markdown4jParser.java可通过markdown.parser.type配置切换默认 flexmark并且渲染时会包一层div classmarkdown-body以便套用 CSS 样式。%table表格数据与内置可视化如果手头的数据满足「行与行之间以\n换行分隔、列与列之间以\t制表符分隔、首行作为表头」的约定就可以用%table显示系统直接享受 Zeppelin 内置的可视化能力。数据格式约定%table Column_A \t Column_B \t Column_C Row1_A \t Row1_B \t Row1_C Row2_A \t Row2_B \t Row2_C原始数据示例截图见docs/assets/themes/zeppelin/img/screenshots/display_table.png使用%table后Zeppelin 会将其渲染为可交互表格并提供内置图表柱状图、折线图、饼图、散点图等效果见docs/assets/themes/zeppelin/img/screenshots/display_table1.png。表格中的 HTML%table 里嵌 %html如果表格内容以%html开头则整块内容会被当作 HTML 解释%table %html table trtd单元格 1/tdtd单元格 2/td/tr /table效果见截图docs/assets/themes/zeppelin/img/screenshots/display_table_html.png。这意味着你可以在表格显示系统中嵌入自定义 HTML 表格、富文本甚至组件。源码层面的表格处理输出流对TABLE类型有特殊处理在 InterpreterOutput.java当处于TABLE类型且遇到连续换行时输出流会重置为「新行开头」状态用于分隔后续输出并且在toString()InterpreterResult.java中TABLE类型消息之间会额外追加空行。生产环境中更常见的方式是通过zeppelinContext.show(...)输出表格在 ZeppelinContext.java 中show(Object o)会检查对象是否为解释器支持的类如 DataFrame、Table 等支持则将其序列化写入输出流底层输出即%table格式否则退回纯文本打印。这也是 Spark 中z.show(df)能直接渲染出可视化表格的原因。输出有大小上限保护InterpreterOutput.LIMIT默认来自Constants.ZEPPELIN_INTERPRETER_OUTPUT_LIMIT当TEXT/TABLE输出超过上限时会自动切换为HTML类型并写入「超出大小限制」提示消息避免前端被超长输出压垮。%network属性图模型网络可视化%network指令让 Zeppelin 把输出当作图Graph渲染支持有向/无向图、节点与边的标签与颜色、附带属性数据等适用于社交网络分析、知识图谱、血缘关系、任务依赖等场景。什么是 Labeled Property Graph标记属性图属性图Property Graph由以下元素构成一组顶点vertices每个顶点有唯一标识符id每个顶点有一组出边outgoing edges每个顶点有一组入边incoming edges每个顶点有一个由「键→值」映射构成的属性集合properties。一组边edges每条边有唯一标识符id每条边有一个出射尾顶点tail vertex和一个入射头顶点head vertex每条边有一个标签label表示两个顶点之间关系的类型每条边有一个由「键→值」映射构成的属性集合。标记属性图Labeled Property Graph是属性图的扩展节点可以被贴上labels标签用来表示其在图模型中的不同角色例如「用户 User」「项目 Project」。Zeppelin 的%network显示系统正是基于这一模型设计并且可以方便地将图数据“扁平化”flatten以适配 Zeppelin 提供的其他可视化格式见下文。%network 的 JSON API新的 NETWORK 可视化基于 JSON 描述字段如下字段是否必填说明nodes必填节点列表每个节点可包含id必填唯一、label节点主标签、labels节点标签列表、data节点附带数据edges选填边列表每条边可包含id必填唯一、source必填源节点 id、target必填目标节点 id、label边的主类型、data边附带数据labels选填映射表 (K, V)K 为节点标签、V 为该标签节点的颜色directed选填true/false默认false表示是否为有向图types选填图中边类型的去重distinct列表交互细节点击段落底部的某个节点或边会展示该实体的属性列表data中的键值对。如何在段落中使用 %network下面是一个简单图示例在 Spark 解释器中输出%spark print(s %network { nodes: [ {id: 1}, {id: 2}, {id: 3} ], edges: [ {source: 1, target: 2, id : 1}, {source: 2, target: 3, id : 2}, {source: 1, target: 2, id : 3}, {source: 1, target: 2, id : 4}, {source: 2, target: 1, id : 5}, {source: 2, target: 1, id : 6} ] } )渲染效果见截图docs/assets/themes/zeppelin/img/screenshots/display_simple_network.png。一个更复杂的示例使用标签、颜色、有向边与边属性%spark print(s %network { nodes: [{id: 1, label: User, data: {fullName:Andrea Santurbano}},{id: 2, label: User, data: {fullName:Lee Moon Soo}},{id: 3, label: Project, data: {name:Zeppelin}}], edges: [{source: 2, target: 1, id : 1, label: HELPS},{source: 2, target: 3, id : 2, label: CREATE},{source: 1, target: 3, id : 3, label: CONTRIBUTE_TO, data: {oldPR: https://github.com/apache/zeppelin/pull/1582}}], labels: {User: #8BC34A, Project: #3071A9}, directed: true, types: [HELPS, CREATE, CONTRIBUTE_TO] } )渲染效果见截图docs/assets/themes/zeppelin/img/screenshots/display_complex_network.png。在这个例子中labels将User节点染成绿色#8BC34A、Project节点染成蓝色#3071A9directed: true使边呈现箭头方向types列出全部关系类型可在前端图例/筛选中使用。%network 的源码实现%network在源码中有完整的数据模型支撑图结构定义于 GraphResult.java其内部类Graph包含nodes节点集合、edges边集合、labels节点标签→颜色映射、types关系类型集合与directed是否有向五个字段与上文 JSON API 一一对应。节点实体 Node.java 继承自GraphEntity额外携带labels节点标签集合构造时取第一个标签作为主标签。关系边实体 Relationship.java 继承自GraphEntity包含source源节点 id与target目标节点 id。GraphResult的构造函数直接super(code, Type.NETWORK, gson.toJson(graphObject))将图对象序列化为 JSON 后以NETWORK类型输出与文档描述的 JSON API 完全一致。前端渲染由 visualization-d3network.js 承担它使用 D3 构建力导向布局依据graph.labels为节点着色默认黑色#000000并根据graph.directed决定是否绘制有向箭头。图的“扁平化”Flatten%network输出的图数据可以很容易地扁平化从而复用 Zeppelin 的其他可视化格式。本质上图的nodes与edges均可展开为行列结构例如将每个节点或每条边展开成一行再以%table等格式交给表格类可视化渲染。效果见截图docs/assets/themes/zeppelin/img/screenshots/display_network_flatten.png。这使得同一份图数据既能以网络视图呈现拓扑关系也能以表格/图表形式呈现属性明细。总结与实践建议显示系统指令适用场景数据格式%text默认 /%text日志、调试、命令输出纯文本%html%html富文本、自定义样式、嵌入组件HTML 片段%markdown%markdown文档排版、数学公式MarkdownMathJax 公式%table%table结构化数据、内置可视化图表\n分行、\t分列、首行表头%html开头则按 HTML%network%network属性图、有向/无向图、关系分析上述 JSON APInodes/edges/labels/directed/types实战要点显示系统与解释器后端无关Spark、Python、SQL、Shell 等解释器均可输出上述指令只要内容符合格式约定显式声明优先虽默认%text但在段落输出前显式写上%html、%table、%network等指令可确保输出按预期类型渲染多个类型用换行分隔表格是最常用的数据可视化入口利用%table 内置图表即可完成大量数据分析展示无需额外前端开发需要交互式图分析时优先%network借助标签、颜色、有向边与属性数据可以直接在 Notebook 中完成轻量级图谱分析注意输出安全与大小%html内容需自行保证安全性Markdown 解释器内置了标签净化超大输出会触发ZEPPELIN_INTERPRETER_OUTPUT_LIMIT限制提示。如需继续深入可阅读仓库中的相关实现与配套文档docs/usage/display_system/angular_backend.md、docs/usage/display_system/angular_frontend.mdAngular 动态显示系统以及核心源码 InterpreterResult.java 与 InterpreterOutput.java。赞分享数据分析数据可视化大数据后端【免费下载链接】zeppelinWeb-based notebook that enables>项目地址https://gitcode.com/gh_mirrors/zeppelin1/zeppelin点击查看免费下载相关推荐Apache Zeppelin 显示系统实战指南%text、%html、%table 与 %network 四种输出模式的原理与用法Apache Zeppelin 显示系统实战指南%text、%html、%table 与 %network 四种输出模式的原理与用法 Apache Zeppe后端前端大数据数据分析Apache Zeppelin 显示系统Display System完全指南从 %text 到 %network 图可视化Apache Zeppelin 显示系统Display System完全指南从 %text 到 %network 图可视化 Apache Zeppelin数据分析数据可视化大数据后端前端任务调度如何让2008-2017年旧款Mac重获新生OpenCore Legacy Patcher完全指南如何让2008 2017年旧款Mac重获新生OpenCore Legacy Patcher完全指南 你是否还在使用一台2012年甚至更早的Mac看着苹果官方操作系统固件驱动开发上一篇Genkit JS 高级自定义 Agent 实战用 defineCustomAgent 掌控每一轮对话下一篇Reasoning Trace Optimizer 实战用 MiniMax M2.1 交错思考Interleaved Thinking调试与优化 AI Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

kubernetes.aio.client.models.v1_tcp_socket_action:Kubernetes Python 异步客户端中 V1TCPSocketAction 模型深度解析

kubernetes.aio.client.models.v1_tcp_socket_action:Kubernetes Python 异步客户端中 V1TCPSocketAction 模型深度解析

后端云原生容器编排 【免费下载链接】python Official Python client library for kubernetes 项目地址: https://gitcode.com/gh_mirrors/python1/python 点击查看 免费下载 本篇聚焦 Kubernetes 官方 Python 客户端(kubernetes-python)异步…

2026/10/10 9:02:42 阅读更多 →
深度学习中的过拟合与正则化实战指南:基于 PyTorch 的 NYU DLSP20 课程笔记

深度学习中的过拟合与正则化实战指南:基于 PyTorch 的 NYU DLSP20 课程笔记

示例工程 【免费下载链接】NYU-DLSP20 NYU Deep Learning Spring 2020 项目地址: https://gitcode.com/gh_mirrors/pyt/pytorch-Deep-Learning 点击查看 免费下载 本篇文章围绕 NYU Deep Learning Spring 2020 课程第 14 周第 3 讲(docs/ja/week14/14-3…

2026/10/10 9:02:42 阅读更多 →
RFC 36 与 GDAL 显式驱动选择机制的演进:从 `driver=` 前缀到 `GDALOpenEx` 驱动白名单

RFC 36 与 GDAL 显式驱动选择机制的演进:从 `driver=` 前缀到 `GDALOpenEx` 驱动白名单

GIS遥感数据工程 【免费下载链接】gdal GDAL is an open source MIT licensed translator library for raster and vector geospatial data formats. 项目地址: https://gitcode.com/gh_mirrors/gd/gdal 点击查看 免费下载 RFC 36 是 GDAL 发展史上一个极具代表性的…

2026/10/11 10:57:33 阅读更多 →

最新新闻

Open Science Desktop的ACP协议详解:与Codex、Claude Code、Zed双向互通的原理与实践

Open Science Desktop的ACP协议详解:与Codex、Claude Code、Zed双向互通的原理与实践

【免费下载链接】open-science Open Science Desktop — local-first, model-agnostic AI research workbench for macOS, Windows & Linux. Open-source Claude Science desktop alternative built on Tauri MCP agent skills. 项目地址: https://gitcode.co…

2026/10/11 13:12:50 阅读更多 →
在广东试了十几个背单词小程序,我踩过的坑比你想的深

在广东试了十几个背单词小程序,我踩过的坑比你想的深

先说个背景。我在广州做了四年英语培训,带过的学员从初中生到准备出国的职场人都有。广东背单词小程序品牌这两年冒出来特别多,地铁上、电梯里、短视频里全是广告。我一开始还挺高兴,觉得工具多了是好事。结果真带着学员挨个试下来&#xff0…

2026/10/11 13:12:50 阅读更多 →
把Hope Agent部署成7x24在线的个人服务:Docker自托管NAS/云VPS与远程访问完整教程

把Hope Agent部署成7x24在线的个人服务:Docker自托管NAS/云VPS与远程访问完整教程

【免费下载链接】hope-agent 🦭 A cross-device desktop AI agent with memory, autonomous goals, dynamic workflows, and headless deployment | 会记忆、能持续推进目标、会动态编排多 Agent 的跨端桌面 AI 助手,也可服务化常驻 NAS / 云端 项目地址…

2026/10/11 13:12:50 阅读更多 →
Jmeter接口测试实战:从HTTP基础到参数化、断言与压测

Jmeter接口测试实战:从HTTP基础到参数化、断言与压测

1. 项目概述:接口测试为什么要选Jmeter先开门见山说结论:用Jmeter做HTTP接口测试,是目前中小团队和个人测试最“性价比”的选择之一。你不需要写一段复杂的Java代码,不需要维护一套平台,只要把Jmeter装好,按…

2026/10/11 13:12:50 阅读更多 →
K8s离线部署flannel镜像包全攻略:从拉取到导入避坑

K8s离线部署flannel镜像包全攻略:从拉取到导入避坑

简介:这份资源面向正在搭建 Kubernetes 集群、需要为节点配置网络插件的运维与开发人员,解决 k8s 安装过程中 flannel 网络组件镜像难以获取、离线环境拉取不便的问题。压缩包共 3 个文件,以 2 个 tar 镜像包和 1 个 yaml 清单为主&#xff0…

2026/10/11 13:12:50 阅读更多 →
面对模糊需求如何落地项目?从rea代号拆解到技术选型与实现

面对模糊需求如何落地项目?从rea代号拆解到技术选型与实现

1. 当标题只剩三个字母:一次“信息真空”下的项目复盘拿到“rea”这个标题的时候,我第一反应是愣了一下。没有项目正文,没有关键词,没有摘要描述,连热搜词和网络热词都是空的。换句话说,这是一个几乎零信息…

2026/10/11 13:11:50 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →