美文网首页
zeppelin 源码

zeppelin 源码

作者: 走在成长的道路上 | 来源:发表于2020-09-21 17:41 被阅读0次

编译

  1. 编译
mvn  install -Pbuild-distr -Pspark-1.6 -Dspark.version=1.6.2 -Phadoop-2.7 -Dhadoop.version=2.7.2  [-Pr|-Psparkr] -Ppyspark -Dmaven.findbugs.enable=false -Drat.skip=true -Dcheckstyle.skip=true -Denforcer.skip=true -Dcobertura.skip=true -DskipTests -X
  1. bin 目录说明
脚本 作用
zeppelin-daemon.sh 提供以daemon形式启停 org.apache.zeppelin.server.ZeppelinServer 服务,并调用common.shfunction.sh设置envclasspath
zeppelin.sh foreground的形式启动ZeppelinServer
Interpreter.sh 采用单独进程启动 org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer 服务,该脚本不会被其他脚本直接调用,实际是通过apache common-exec来调用的
common.sh 设置zeppelin运行时需要的envclasspath,如果${ZEPPELIN_HOME}/conf/目录中存在zeppelin-env.sh,则会调用该脚本
function.sh 一些公共基础函数
  1. conf 目录说明
配置文件 作用
shiro.ini apache shiro框架使用的权限控制文件
zeppelin-env.sh ${ZEPPELIN_HOME}/bin/common.sh脚本调用,设置诸如:SPARK_HOMEHADOOP_CONF_DIRzeppelin与外围环境集成的环境变量
zeppelin-site.xml.template zeppelin 的配置模板,被注释掉的 propertyzeppelin 的默认配置,可以 renamezeppelin-site.xml 然后根据需要 override
  1. 模块依赖关系
  • 核心模块
模块 作用 开发语言
zeppelin-server 项目的主入口,通过内嵌Jetty的方式提供Web UI和REST服务,并且提供了基本的权限验证服务 java
zeppelin-zengine 实现Notebook的持久化、检索, 实现interpreter的自动加载,以及maven式的依赖自动加载 java
zeppelin-interpreter 为了支持多语言Notebook,抽象出了每种语言都要事先的Interpreter接口,包括:显示、调度、依赖以及和zeppelin-engine之间的Thirft通信协议 java
zeppelin-web AngluarJS开发的web页面 Javascript(主要是AngularJS、Node.JS以及使用websocket)
zeppelin-display 实现向前台Angular元素绑定后台数据 scala
zeppelin-spark-dependencies 无具体功能,maven的最佳实践,将多个module都要依赖的公共类单独抽离出来,供其他module依赖。目前zeppelin-zinterpreter和zeppelin-spark这2个module依赖它 java
zeppelin-distribution 为了将整个项目打包成发布版,而设置的 module,打包格式见src/assembly/distribution.xml xml
  • 模块依赖关系
模块依赖关系

Helium 扩展包

Helium是一个可视化模块,可以在Zeppelin中使用,支持插拔式加载。Helium从Zeppelin-0.7开始支持,通过 Helium framework 框架实现。

因为Helium是 npm package, 可以发布到 npm registry。这是在registry发布的Helium packages 列表。如果希望了解在Zeppelin中工作的细节, 查看 How it works。你可以可以创建一个你自己的包,参考 Write new Visualization 中的方法。

安装使用

将包描述文件 zeppelin-bubble.json 放到本地存储registry目录 (却省为 ZEPPELIN_HOME/helium)。然后到主界面菜单选择Helium即可打开管理界面,然后配置为启用即可。

  • zeppelin-bubblechart 气泡图
{
  "type" : "VISUALIZATION",
  "name" : "zeppelin-bubblechart",
  "description" : "Animated bubble chart",
  "artifact" : "zeppelin-bubblechart@0.0.4",
  "license" : "BSD-2-Clause",
  "icon": "<svg viewBox='0 0 70 70'><circle cx='26' cy='28' stroke='black' style='stroke-width: 1px;' r='25' fill='seagreen'/><circle cx='42' cy='44' stroke='black' style='stroke-width: 1px;' r='20' fill='DodgerBlue'/>
<circle cx='54' cy='24' stroke='black' style='stroke-width: 1px;' r='15' fill='crimson'/></svg>"
}
  • zeppelin-leaflet 地图
{
  "type": "VISUALIZATION",
  "name": "volume-leaflet",
  "description": "A geospatial visualization for Apache Zeppelin using Leaflet",
  "artifact": "volume-leaflet@v1.0.2",
  "license": "BSD-2-Clause",
  "icon": "<i class='fa fa-globe'></i>"
}

$ZEPPELIN_HOME/local-repo/helium-bundle/bundleshelium 实际安装目录

pyecharts 集成

  • 普通图
%python
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.ZEPPELIN
 
import pyecharts.options as opts
from pyecharts.charts import Bar
 
bar = (
    Bar()
    .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
    .add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
    .set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)
# 直接使用 notebook 进行渲染
bar.render_notebook()
  • 地图
%python

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker
from pyecharts.globals import CurrentConfig, NotebookType

CurrentConfig.NOTEBOOK_TYPE = NotebookType.ZEPPELIN

map = Map()
map.add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
map.add("商家C", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
map.set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"))

# 渲染到 html ,然后使用 html 模式进行展示
html_content = map.render_embed()
print("%html {}".format(html_content))
  • pandas 数据显示
%python
import pandas as pd

data = {
    "rows": [
        {
            "country": "中国",
            "city": "陕西西安市",
            "times": "2",
            "date": "2010~2014",
            "remark": "读书四年,常往西安,一座有中国古代文化的城市",
            "longitude": "108.941433",
            "latitude": "34.343424"
        },
        {
            "country": "中国",
            "city": "陕西省咸阳市乾县——乾陵",
            "times": "2",
            "date": "2011年4月",
            "remark": "清明节游乾陵,武则天无字碑,唐高宗墓,有唐永泰公主墓,乾陵地宫……",
            "longitude": "108.217844",
            "latitude": "34.578448"
        }
    ]
}

df = pd.DataFrame(data['rows'])
df['geo'] = df.apply(lambda r: '%s,%s' % (r['latitude'], r['longitude']), axis=1)
z.show(df)

安装 interpreter

# 查看帮助
./bin/install-interpreter.sh

# 安装指定 interpreter
./bin/install-interpreter.sh --name md,shell,jdbc,python

# 安装所有 interpreter
./bin/install-interpreter.sh --all

# 指定版本安装
./bin/install-interpreter.sh -n sparql -t org.apache.zeppelin:zeppelin-sparql:0.9.0-preview2

从安装过程日志看出 $ZEPPELIN_HOME/interpreter/ 存放所有 interpreter 库,仓库下载地址在 $ZEPPELIN_HOME/conf/interpreter.json 中配置的

相关文章

网友评论

      本文标题:zeppelin 源码

      本文链接:https://www.haomeiwen.com/subject/auyttktx.html