编写新的可视化

什么是Apache Zeppelin可视化

Apache Zeppelin 可视化是一个可插拔的包,可以通过 Zeppelin 中的 Helium 框架在运行时加载/卸载。可视化是一个 JavaScript npm 包,用户可以像使用笔记本中的其他内置可视化一样使用它们。

它是如何工作的

1. 从注册表加载Helium包文件

Zeppelin 需要知道有哪些可视化包可用。Zeppelin 将从在线和本地注册表中读取包的信息。 注册表可以通过 ZEPPELIN_HELIUM_LOCALREGISTRY_DEFAULT 环境变量或 zeppelin.helium.localregistry.default 属性进行配置。

2. 启用包

一旦Zeppelin从注册表加载Helium包文件,可用的包将显示在Helium菜单中。

点击“启用”按钮。

3. 动态创建并加载可视化包

一旦启用了可视化包,HeliumBundleFactory 会创建一个 js 包。该 js 包由 helium/bundle/load rest api 端点提供服务。

4. 运行可视化

Zeppelin 为加载的可视化显示额外的按钮。 用户可以像使用其他内置的可视化一样使用它。

编写新的可视化

1. 创建一个 npm 包

在你的新可视化目录中创建一个package.json。你可以在package.json中添加任何依赖项,但你必须包含两个依赖项:zeppelin-viszeppelin-tabledata

这是一个示例

{
  "name": "zeppelin_horizontalbar",
  "description" : "Horizontal Bar chart",
  "version": "1.0.0",
  "main": "horizontalbar",
  "author": "",
  "license": "Apache-2.0",
  "dependencies": {
    "zeppelin-tabledata": "*",
    "zeppelin-vis": "*"
  }
}

2. 创建你自己的可视化

要创建自己的可视化,你需要创建一个js文件并从Visualization类导入zeppelin-vis包并扩展该类。zeppelin-tabledata包提供了一些有用的转换,比如透视表,你可以在你的可视化中使用。(你也可以创建自己的转换)。

Visualization 类,有几个方法需要你重写和实现。这里有一个简单的可视化示例,它只是打印 Hello world

import Visualization from 'zeppelin-vis'
import PassthroughTransformation from 'zeppelin-tabledata/passthrough'

export default class helloworld extends Visualization {
  constructor(targetEl, config) {
    super(targetEl, config)
    this.passthrough = new PassthroughTransformation(config);
  }

  render(tableData) {
    this.targetEl.html('Hello world!')
  }

  getTransformation() {
    return this.passthrough
  }
}

要了解更多关于Visualization类的信息,请查看visualization.js

您可以查看完整的可视化包示例 这里

Zeppelin 的内置可视化使用了相同的 API,因此您可以查看 内置可视化 作为额外的示例。

3. 创建Helium包文件并本地部署

Helium 包文件 是一个提供应用程序信息的 json 文件。 Json 文件包含以下信息

{
  "type" : "VISUALIZATION",
  "name" : "zeppelin_horizontalbar",
  "description" : "Horizontal Bar chart (example)",
  "license" : "Apache-2.0",
  "artifact" : "./zeppelin-examples/zeppelin-example-horizontalbar",
  "icon" : "<i class='fa fa-bar-chart rotate90flipX'></i>"
}

将此文件放在您的本地注册表目录中(默认 ./helium)。

类型

当你创建可视化时,'type' 应为 'VISUALIZATION'。同时检查这些类型。

名称

可视化的名称。应该是唯一的。允许使用[A-Za-z90-9_]

描述

关于可视化的简短描述。

工件

可视化 npm 包的位置。支持带有版本的 npm 包或本地文件系统路径。

例如。

当工件存在于 npm 仓库中时

"artifact": "my-visualiztion@1.0.0"

当工件存在于本地文件系统中时

"artifact": "/path/to/my/visualization"
许可证

许可证信息。

例如。

"license": "Apache-2.0"
图标

用于可视化选择按钮的图标。此字段中的字符串将呈现为HTML标签。

例如。

"icon": "<i class='fa fa-coffee'></i>"

4. 在开发模式下运行

将您的Helium包文件放入本地注册表(ZEPPELIN_HOME/helium)。 运行Zeppelin。然后在可视化开发模式下运行zeppelin-web。

cd zeppelin-web
yarn run dev:helium

你可以浏览localhost:9000。每次刷新浏览器时,Zeppelin都会重新构建你的可视化并重新加载更改。

5. 发布你的可视化

完成后,使用npm publish发布你的可视化包。 就这样。在一小时内,你的可视化将在Zeppelin的helium菜单中可用。

查看更多

查看氦可视化:转换以获取更复杂的示例。