前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >动手学Zeppelin数据挖掘生产力怪兽

动手学Zeppelin数据挖掘生产力怪兽

作者头像
lyhue1991
发布2021-04-07 15:20:40
1.6K0
发布2021-04-07 15:20:40
举报
文章被收录于专栏:Python与算法之美

Apache Zeppelin是一款类似jupyter notebook的交互式代码编辑器。

和jupyter一样,它基于web环境,在同一个notebook中逐段调试运行代码并显示运行结果,支持图形可视化和markdown文档注释。

Zeppelin强大的交互式编程特性可以帮助用户按照REPL(read-evaluate-print-loop)最佳实践方式进行数据挖掘代码开发,是一头当之无愧的生产力怪兽。

公众号后台回复关键字:源码,获取本文全部代码。

Zeppelin内置了对python,markdown,spark,shell,mysql,flink等解释器。

和jupyter-notebook/jupyterlab相比,Zeppelin具有如下非常吸引我的优点:

  • 更加完善的对spark-scala的可视化支持。
  • 在一个notebook中可以同时使用python,scala,sql等不同的解释器。
  • 支持对flink代码的调试。

在以下一些方面,Zeppelin体验不如jupyter notebook:

  • 缺少Web界面对文件的上传下载,查看内容等支持。
  • 缺少对Terminal命令行的支持。
  • 对python的支持不如jupyter notebook,无法对PIL,shapely等库的对象直接j进行可视化渲染。

因此主要推荐一些需要使用spark-scala进行数据挖掘或者使用flink进行流计算的同学使用Zeppelin,可以和jupyter notebook一起使用。

一,Zeppelin的安装

安装Zeppelin可以在Linux操作系统或者MacOS操作系统安装,目前暂不支持Windows操作系统。

1,下载Zeppelin安装包

Zeppelin安装包下载地址:

  • 官方地址:https://zeppelin.apache.org/download.html
  • 国内镜像:https://mirrors.tuna.tsinghua.edu.cn/apache/zeppelin/

2,解压并重命名安装包

代码语言:javascript
复制
tar -xzvf zeppelin-0.9.0-bin-all.tgz 
mv zeppelin-0.9.0-bin-all zeppelin

3,修改配置文件

代码语言:javascript
复制
cd zeppelin/conf 
mv zeppelin-site.xml.template zeppelin-site.xml

用vim 编辑 zeppelin-site.xml, 建议按照如下方式修改server地址(默认是127.0.0.1)和端口号(默认是8080)

代码语言:javascript
复制
<property>
  <name>zeppelin.server.addr</name>
  <value>0.0.0.0</value>
  <description>Server binding address</description>
</property>

<property>
  <name>zeppelin.server.port</name>
  <value>8082</value>
  <description>Server port.</description>
</property>

4,修改环境变量

将zeppelin/bin对应的路径添加到 环境变量PATH中。

vim ~/.bashrc

代码语言:javascript
复制
export PATH=/opt/zeppelin/bin:${PATH}

然后执行source ~/.bashrc 让修改生效。

5,启动Zeppelin服务

命令行中输入如下命令即可启动Zeppelin服务。

代码语言:javascript
复制

zeppelin-daemon.sh start

然后在浏览器中输入机器对应的地址和端口号即可。

http://127.0.0.1:8082/

关闭Zeppelin服务

代码语言:javascript
复制

zeppelin-daemon.sh stop 

6,环境备注

Zeppelin依赖Java8环境,并且需要是jdk1.8.0_151以上版本的Java环境。

如果缺少相应环境,或者版本过低,在运行代码时候会报错。

二,Zeppelin的界面

1,主界面

Zeppelin在浏览器的主界面如下.

已经默认加载了安装包zeppelin/notebook目录下自带的一些教程笔记本。

可以通过Import note加载已有的zpln文件或者ipynb文件。

注意Zepplin的notebook文件默认都是存储在zeppelin/notebook目录下,不是在启动Zeppelin时候的当前目录。

这一点与jupyter有所不同。

2,notebook界面

Zeppelin的notebook界面以段落(paragraph)为单位,每个段落可以使用不同的解释器(interpreter)。

按住shift+Enter键执行当前所在段落。

鼠标移动到段落之间的空隙可以插入一个新的段落。

可以点击段落右上角的设置按钮,可以添加段落标题,改变字体大小,改变段落宽度等。

三,Zeppelin和markdown

Zeppelin支持markdown解释器,在paragragh的开始使用 %md标记将使用markdown解释器。下面是一个示范。

代码语言:javascript
复制
%md

* 支持公式
$$E=mc^2$$

* 支持图片 
![](https://avatars.githubusercontent.com/u/30676974?s=400&u=0aa18bc255ebfcfacd9d71dd3f5750dbadc4511b&v=4)

* 支持链接 
[《30天吃掉那只Tensorflow2》](https://github.com/lyhue1991/eat_tensorflow2_in_30_days)

* 支持表格

|:--:|:--:|:--:|
| name| age |gender  |
| LiLei |12  |male |
| HanMeimei |13  |female |

* 支持表情???

四,Zeppelin和Shell

Zeppelin支持Shell解释器,在paragragh的开始使用 %sh标记将使用shell解释器。下面是一个示范。

代码语言:javascript
复制
%sh 
pwd
pip install torchkeras 

五,Zeppelin和Python

Zeppelin支持Python解释器,在paragragh的开始使用 %python标记将使用python解释器。下面是一个示范。

注意,可以用%matplotlib inline 来显示matplotlib绘制的图片,也可以使用zepplin提供的z.show(plt)方法来显示图片。

另外,还可以调用Zeppelin提供的z.show(df)来对Pandas中的DataFrame进行可视化。

代码语言:javascript
复制
%python

%matplotlib inline 

import matplotlib.pyplot as plt

fig = plt.plot([1,2,3],[1,4,9])
代码语言:javascript
复制
%python
import numpy as np 
import pandas as pd 
df = pd.DataFrame({"name":["LiLei","HanMeimei","LiLy","Jim"],"score":[80,90,70,75],"age":[13,15,12,13]})

z.show(df) //zeppelin提供的对DataFrame的可视化方法

六,Zeppelin和Spark

Zeppelin提供了非常强大且友好的Spark支持,可以使用Spark-Scala,SparkSQL,PySpark,SparkR解释器。

并且在不同的解释器注册的临时表和视图是共享的,非常强大。

可以调用Zeppelin提供的z.show(df)来对Spark-Scala中的DataFrame进行可视化。

如果需要非常灵活的可视化,可以将该DataFrame注册成视图,然后再用PySpark读取该视图,转换成Pandas中的DataFrame后,利用matplotlib来进行可视化。真的是无比的灵活。

代码语言:javascript
复制
%spark 
import spark.implicits._ 

val df = spark.createDataFrame(Array(("LiLei",80,13),("HanMeimei",90,15),("Lily",70,12),("Jim",75,13))).toDF("name","score","age")
df.show() 
df.createOrReplaceTempView("students")
z.show(df) //zeppelin提供的dataframe可视化方法
代码语言:javascript
复制
%sql 
select * from students where score>75 
代码语言:javascript
复制
%pyspark 

df = spark.sql("select * from students")
df.show() 

如果需要设置Spark的相关executor数量,内存大小等配置参数,自定义的jar包等,可以在interpreter里设置。

interpreter可以在zeppelin主界面右上角下拉菜单处找到。

七,Zeppelin和Flink

Zeppelin提供了非常强大的对Flink的支持。需要下载安装Flink并在interpreter中配置Flink的Flink_home参数。

以下分别是Flink下批处理和流处理的WordCount示范。

代码语言:javascript
复制
%flink

val data = benv.fromElements("hello world", "hello flink", "hello hadoop")
data.flatMap(line => line.split("\\s"))
             .map(w => (w, 1))
             .groupBy(0)
             .sum(1)
             .print()
代码语言:javascript
复制
%flink

val data = senv.fromElements("hello world", "hello flink", "hello hadoop")
data.flatMap(line => line.split("\\s"))
  .map(w => (w, 1))
  .keyBy(0)
  .sum(1)
  .print

senv.execute("word count example")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法美食屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,Zeppelin的安装
  • 二,Zeppelin的界面
  • 三,Zeppelin和markdown
  • 四,Zeppelin和Shell
  • 五,Zeppelin和Python
  • 六,Zeppelin和Spark
  • 七,Zeppelin和Flink
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档